diff --git a/tinytorch/milestones/01_1958_perceptron/01_rosenblatt_forward.py b/tinytorch/milestones/01_1958_perceptron/01_rosenblatt_forward.py index f3e4815993..2b13385a7a 100644 --- a/tinytorch/milestones/01_1958_perceptron/01_rosenblatt_forward.py +++ b/tinytorch/milestones/01_1958_perceptron/01_rosenblatt_forward.py @@ -85,7 +85,9 @@ This milestone shows you WHY training is essential - the model won't work withou import sys import os import numpy as np -rng = np.random.default_rng(7) +# Unseeded RNG: each run draws different cluster points so the demo lives up +# to the on-screen "No random seed - each run will be different!" promise. +rng = np.random.default_rng() import argparse # Add project root to path for correct tinytorch imports diff --git a/tinytorch/src/03_layers/03_layers.py b/tinytorch/src/03_layers/03_layers.py index b32107572f..b94c8e93b3 100644 --- a/tinytorch/src/03_layers/03_layers.py +++ b/tinytorch/src/03_layers/03_layers.py @@ -62,7 +62,10 @@ from tinytorch.core.activations import ReLU, Sigmoid # Module 02 - intelligence #| export import numpy as np -rng = np.random.default_rng(7) +# Module-level RNG is intentionally UNSEEDED so freshly-constructed layers +# (e.g., Linear) produce different weights on every run. Tests/demos that +# need determinism create their own seeded RNG locally (see below). +rng = np.random.default_rng() # Import from TinyTorch package (previous modules must be completed and exported) from tinytorch.core.tensor import Tensor