World. Paint a probability distribution for three classes, then sample datasets from it. Drag on the left surface to paint the chosen class; Move drags a bump, Erase removes mass. The simplex sets how common each class is. Keys: 1–3 pick a class, R resamples, Ctrl/Cmd Z undoes.
Linear model: points. Click the plane to place a point of the chosen class; it snaps to the grid (integers by default; halves or off under Controls — with snapping off, Copy for NumPy rounds to 2 decimals). Drag a point to move it. Click a point to give it the chosen class. Delete with right-click, shift-click, Delete while hovering, the Erase tool, or its × in Points. Drag empty space to pan, scroll to zoom. Keys 1–4 pick a class.
Copy for NumPy puts two lines on the clipboard:X = np.array([[1, 2], [3, 4]], dtype=float)y = np.array([-1, 1])
Paste X, y reads the same lines back, or print(X), print(y) output.
Linear model: the model. Paste w and b (binary: s = X @ w + b, w shape (2,), b a number; ŷ = 1 where s > 0, else 0 on 0/1 labels, or +1/−1 on ±1 labels) or W and b (c classes, labels 0…c−1: S = X @ W + b, W shape (2, c) with one column per class, b shape (c,), ŷ = argmax). Accepted: w = np.array([...]) assignments, NumPy's repr array([...]), print() output without commas (matrices across lines are fine), plain lists, np.float64(0.3) or a bare number for b, and the two values in either order when named. Unnamed, the weights come first.
Scores 3D. Binary: the plane s(x) over the view, coloured by sign, meeting the floor along s = 0. Classes: the top of the c score planes, each piece coloured by the class whose plane is highest there, so the creases sit exactly over the decision boundaries. Drag to orbit, scroll to zoom, double-click to reset. Heights are rescaled to fit the view.
2-layer net. The same points, scored by a ReLU network: H = relu(X @ W1 + b1), then s = H @ w2 + b2 (binary: W2 shape (h,), b2 a number) or S = H @ W2 + b2 (c classes: W2 shape (h, c), b2 shape (c,)). W1 has shape (2, h), one column per hidden unit, and b1 shape (h,). Name them W1, b1, W2, b2 (or self.W1, …), or paste them unnamed in that order. Each dashed line is one hidden unit's z = 0; its arrow points to the side where the unit is on. Between those lines the net is one linear model, so every boundary is straight there and bends only on a dashed line. The Points table shows each point's h. Hidden space redraws every point at its h, where the output layer is a linear model: flat for h ≤ 2, in 3D for h ≥ 3 (drag to orbit). Its boundary is drawn exactly for h ≤ 3: a line in 2D, planes in 3D. For h > 3, pick three hidden units as axes.
Layout. The chevron on Points or Model folds that panel to a strip; click the strip to bring it back. Keys: [ Points, ] Model, \ both. In the 2-layer net with Hidden space on, the views follow the net from left to right: the diagram across the top, the input space x on the left (the ReLUs over the plane, above the Plane itself), and the hidden space h on the right. Diagram hides the diagram. Drag either bar to resize (double-click resets).
Links. #mode=model&example=multi&theme=light&fs=1.3 opens a ready state for a slide or a screenshot.