// part 8 of 8
Part 8
Why ledger, glossary, sources
This part is for looking things up. Section 8.1 gathers every why card of the course, the boxes that say why each choice was made, with a filter to find one. Section 8.2 repeats every glossed term with its definition, and section 8.3 says what each source named in a mark points to: the papers, our protocols and reading notes, our other documents, the code and the data files, each with its path. Fact
8.1 The why ledger
A why card answers the question "why this choice?" in five fields. Decision says what was chosen. Why gives the reason that the paper's authors or our protocol state, quoted or closely paraphrased with its place. Evidence gives the ablation or the measurement behind it, with its numbers. What it does to training says, in a sentence or two, what the choice does to the gradients, the targets or the course of training. If you changed it says what would happen, as the paper or our tests report it, or names a lab where you can try it. Fact
The marks inside a card work as everywhere in the course: a reason quoted from a paper or from our documents wears a Fact mark, a measurement of our runs a Reading mark, and the course's own reasoning a Toy mark. The Why field of every card wears one. Fact
Each card is written once, in the section that teaches its concept, and the build copies it here with a link back to that section. The cards come in groups, one for each part that has them: Part 1's explain the basic tools of learning, Part 2's the design of the Vision Transformer, Part 3's the decisions of DINO, Part 4's those of SelfPatch, Part 5's our rule and our protocol, and Part 6's the way we read a trained model. Fact
To find a card, type one or more words into the filter. A card stays in view when it contains every word you typed, in any of its fields and in upper or lower case. Each word is looked for on its own, anywhere in the card's text, so a longer word finds fewer cards: try temperature, centring, momentum 0.996 or bottom fifth. The line under the field counts the cards in view, and an empty field shows them all. Fact
Part 1: Foundations
Part 2: Transformer
Part 3: DINO
Part 4: SelfPatch
Part 5: Our rule
Part 6: Reading
8.2 Glossary
On every page a glossed term is set in italics and underlined: click it, tap it, or reach it with the Tab key and press Enter, and its definition opens in a small box beside it. This glossary repeats the definitions of all the pages. Where two parts define the same term, the earlier part's definition is the one kept here, and each page keeps its own wording in the glossary at its foot. Fact
- Activation
- The fixed function, also called the bend, that a layer applies to each of its weighted sums before the next layer. ReLU and GELU are two.
- AdamW
- The optimiser that DINO, SelfPatch and our runs use: it keeps running averages of each parameter's gradient and of its square, moves each parameter by the first divided by the square root of the second, times the learning rate, and shrinks every weight a little at each step.
- Affinity
- In the decoder, the table of link weights between every pair of patches of one picture: a full link of one where the cosine of two keys is above τ, and a hair-thin link otherwise.
- Aggregation module
- SelfPatch's small learned network that summarises a set of tokens into one: a learned query token asks two class-attention blocks, and a final LayerNorm rescales the answer. It makes each anchor's target from its positives, and the crop's image-level token from all of its tokens.
- Anchor
- The patch whose lesson is being built. Every patch of a crop takes a turn as the anchor, and its target is made from its positives.
- AP100
- The mask average precision of COCO's evaluation with the object categories ignored and up to 100 masks per image. The decoder's masks are ranked by a label-free score; a mask is a hit when its IoU (overlap divided by union) with a true object not yet matched reaches the threshold, and the precision over the levels of recall is averaged over ten thresholds, from an IoU of 50 to 95 per cent.
- arXiv
- A free public website where researchers post their papers. Each paper there keeps a permanent number, such as
2104.14294for DINO, so that anyone can find the same paper again. - Asymmetry
- The difference SelfPatch builds in between its two networks: the teacher makes each target from the anchor's aggregated positives, while the student predicts it from the anchor's own token alone.
- Attention
- The step of a transformer block in which every token takes a weighted sum of all the tokens' values, weighted by how well its query matches each token's key.
- Attention head
- One of several attention computations that run side by side in a block, each on its own slice of the queries, keys and values, with its own scores and weights. ViT-S/16 has 6 heads of 64 numbers in every block.
- Attention weight
- One share of a row of attention: the softmax of a query's scores against all the keys, so the shares of a row are positive and add up to 1. They are computed afresh for every picture, unlike the learned weights of the network.
- Attraction
- A loss term that only pulls tokens together. SelfPatch's patch loss is attraction only: nothing in it lowers the agreement of any pair of patches.
- Augmentation
- A random change applied to a training crop, such as a mirror flip, a colour change or a blur, so that two views of one image differ.
- Average precision
- A detection score, AP. The detections are matched to the truth objects picture by picture, a match counting when its IoU reaches a threshold; then, going down all the detections from the most confident, the best precision reached at each level of recall is averaged over the levels from 0 to 1. AP50 uses the threshold 0.5; AP100 averages over the ten thresholds from 0.5 to 0.95 and allows up to 100 detections per image. Our readings ignore categories and pool all the panel's images.
- Average recall
- The share of the truth objects that the detections find, averaged over the ten IoU thresholds from 0.5 to 0.95. AR100 allows up to 100 detections per image.
- Backbone
- The part of the network that turns a picture into tokens; in this course, ViT-S/16. The tokens and keys that later parts read come out of it.
- Background false-positive rate
- The share of the truth background's pixels that some predicted region covers. It is a cost: lower is better.
- Backpropagation
- The procedure that computes the gradient for every parameter by passing the loss's sensitivity backwards through the network, one layer at a time.
- Backward pass
- The computation that runs after the loss is measured. It goes back through the network's operations in reverse order and finds, for every adjustable weight, how the loss would change if that weight moved a little: the weight's gradient.
- Batch
- The images whose gradients are averaged before one step: 256 in our runs.
- Bias
- A learned number that a layer adds to one of its weighted sums.
- Bias correction
- The step of AdamW that divides its two running averages by one minus their keep rate raised to the step number, which makes up for their start at zero.
- Bias-free keys
- A key rule that subtracts the last block's key bias from every key before the decoder compares them. It leaves any other shared part of the keys in place.
- Bicubic interpolation
- A smooth way to resize a grid of numbers, which estimates each new value from nearby old values with cubic curves.
- Bootstrap interval (image-bootstrap interval)
- A range for a number measured on a panel of images. Draw the panel's images again at random with replacement, recompute the number, repeat that many times and keep the middle 95 per cent of the results: the interval shows how much the number could move with other images of the same kind. It holds no seed spread.
- Bottleneck
- The narrow layer of 256 numbers at the end of the projection head's MLP, just before the L2 normalisation.
- Candidate
- One of the 8 patches in an anchor's 3 by 3 window, among which its positives are chosen.
- Centre
- In DINO, a running average of the teacher's scores, one number per prototype, updated after every step.
- Centring
- Subtracting the centre from the teacher's scores before the softmax, so that no prototype can win for every picture.
- Channel
- One of the three colours a pixel stores: red, green or blue.
- Checkpoint
- A saved copy of a network's weights, written during or after training so that it can be loaded again later. Our runs write one every 5 epochs and one at the end; SelfPatch's authors published the checkpoint of their trained network.
- Class attention
- Attention in which only one token asks: the query token attends to itself and to the set it summarises, and it alone is updated. SelfPatch borrows it from the CaiT model of Touvron and colleagues.
- Class token [CLS]
- An extra learned token that DINO adds to the patch tokens. It belongs to no patch, gathers information from all of them, and its output summarises the picture. The backbone our runs train has none; SelfPatch keeps its class token in a separate head.
- Collapse
- The cheap way out of a task without labels: the network gives every picture the same answer, so every pair agrees and nothing about pictures is learned.
- Colour jitter
- An augmentation that changes a crop's brightness, contrast, saturation and hue by random amounts.
- Commit
- A saved version of a project's code in the tool Git. Its name is a fingerprint of 40 characters that changes when any of its files changes, so it pins down one exact version of the code.
- Component
- A group of grid cells that can all be reached from one another by steps up, down, left or right without leaving the group. The decoder's mask is the component of the kept side that holds the seed patch.
- Contrastive loss
- A loss that pulls an anchor towards its positives and pushes it away from its negatives in one formula. For each positive, a softmax over that positive and all the negatives should put most of its weight on the positive; the loss is minus the logarithm of the positive's share. InfoNCE is the contrastive loss of our rule.
- Convolution
- An operation that slides one small table of weights across a picture and computes a weighted sum at each place. With a window of 16 × 16 pixels that jumps 16 pixels at a time, it applies the same linear map to every patch.
- Cosine schedule
- A setting that moves from a start value to an end value along half a cosine wave: slowly at first, fastest in the middle and slowly at the end.
- Cosine similarity
- How alike two directions are: the dot product of two vectors divided by both their lengths, which is the cosine of the angle between them, from −1 for opposite directions through 0 for a right angle to 1 for the same direction.
- Crop
- A piece cut out of a photograph and resized to a square of a fixed size. In training the network sees crops: usually a part of the photograph, at most all of it.
- Cross-entropy
- DINO's loss for one pair of crops: minus the sum, over the prototypes, of the teacher's probability times the logarithm of the student's probability. It is smallest when the student's probabilities equal the teacher's.
- Decoder
- The fixed recipe that turns a trained network's per-patch vectors into regions. Ours is MaskCut with frozen settings; it has no weights and learns nothing.
- Defined image
- A picture of the panel that holds at least one retained truth object. A reading's pixel scores, their intervals and its regions per image are means over the defined images only; AP and AR pool every image of the panel.
- Degenerate cut
- A normalised cut that cannot be trusted, because the second and third eigenvalues are equal or nearly so, or the spectrum is broken. The decoder then stops and keeps the masks it already has.
- Degree
- In the decoder's graph, the sum of one patch's link weights. The degrees sit on the diagonal of the matrix D.
- In the contrastive loss, the part of the softmax's denominator that one partner holds: wp for the positive and wn for each negative. The shares add up to 1. The negatives' total, 1 − wp, is the weight of the pull, and each negative's share is how hard it pushes.
- Dimension
- How many numbers a vector holds: 3 for a pixel, 384 for a token.
- Direct push
- A push considered for the non-local idea and dropped: it adds the overlap of each negative pair itself to the loss, so that every negative pair is pushed apart, however far apart it already is.
- Distillation
- Training a student network to reproduce a teacher network's outputs.
- DOI
- Digital Object Identifier: a permanent name registered for a published document, such as a conference paper. A search for the DOI finds the document even after its web address changes.
- Dot product
- The sum of the products of two vectors' matching numbers. It is large when the two vectors point the same way.
- Eigenvalue
- The number λ that goes with one solution v of an equation such as (D − A) v = λ D v. The decoder reads the second-smallest, λ2, and compares it with the third, λ3.
- Entropy
- How spread out a set of shares is, −Σ p ln p: zero when one option takes everything, largest when all the shares are equal.
- Envelope
- The file in which a run saves its whole state: the student's and the teacher's weights, the loss's centres, the optimiser's state, the step, the seed and the settings, enough to continue the run or to read it. Our runs write one every 5 epochs, and the last, after epoch 20, is the object of a run.
- Epoch
- One pass over all the training images: 462 steps in our runs.
- Equation walk
- The course's way through an equation, in five blocks: the formula, every symbol with its size, a worked example that you can redo by hand, the gradient, and what the term does over training.
- Exponential moving average (EMA)
- A running average in which each new value gets a small weight and older values fade away step by step. DINO's teacher is an exponential moving average of the student's weights.
- Fact
- A statement copied from a paper or from our own code, protocols or reports. Its mark names the source; click or tap the mark to read it.
- Fiedler vector
- The solution of the normalised cut's equation that goes with the second-smallest eigenvalue: one number per patch, similar for patches joined by strong links. The decoder splits the patches at its mean.
- Foreground ARI
- The adjusted Rand index over the truth objects' pixels. For every pair of these pixels it checks whether the prediction groups the two the way the truth does, scored so that a perfect grouping gets one and a random one about zero.
- Foreground union IoU
- The IoU of all predicted regions taken together with all truth objects taken together. It ignores which region covers which object.
- Forward pass
- One computation of a network's output from its input.
- Gaussian blur
- An augmentation that softens a crop by averaging each pixel with its neighbours, the nearer ones weighing more.
- GELU
- Short for Gaussian error linear unit: the smooth bend z · Φ(z) that the transformer uses. Large positive numbers pass almost unchanged and large negative ones are squashed towards zero.
- Global crop
- One of the two large crops taken from each image at every step. In SelfPatch's code and our runs it covers 0.25 to 1.0 of the image's area and is resized to 224 × 224 pixels.
- GPU
- Short for graphics processing unit: a chip that does thousands of small multiplications at once, which is what a network's layers need.
- Gradient
- For every parameter, how fast the loss changes when that parameter moves a little. Training moves each parameter against it.
- Gradient clipping
- Shrinking any gradient that grows past a set size, so that one step cannot jump too far.
- Gradient descent
- Training by repeated small steps against the gradient: each parameter becomes itself minus the learning rate times its gradient.
- Graph density
- The share of all pairs of patches that the affinity links, each patch paired with itself included. At a density of one every patch is linked to every other, and the cut has nothing left to separate.
- Heat map
- A table of numbers drawn as a grid of cells whose shade shows the size of each number. In Lab N the heat map holds the cosine of every pair of the toy crop.
- Hinge
- A loss that is zero until a quantity crosses a margin and grows after it. The bounded hinge of the first non-local design pushed a pair apart only while its overlap stayed above a margin; it was dropped.
- Hungarian matched IoU
- The primary endpoint of our readings: truth objects and predicted regions are paired one to one so that the summed IoU is as large as possible, and the score is the mean over the truth objects, an object without a region counting zero.
- Hungarian matching
- The one-to-one pairing of true objects with predicted regions that makes the sum of their IoUs as large as possible; an object left without a region scores 0.
- ImageNet
- A large public collection of photographs. Its colour statistics set the normalisation that every picture of this course goes through.
- InfoNCE
- A contrastive loss: a view must pick out its partner among negatives, scored by the share that their similarity takes in a softmax over the partner and the negatives. MoCo-v2 uses it between images; our rule uses it between the patches of one crop (Part 5).
- IoU
- Intersection over union: the area two masks share divided by the area they cover together. It is one for a perfect match and zero when they do not overlap.
- Island of agreement
- A group of patches whose tokens agree with each other and disagree with the patches around them. GLOM pictures the parts of an image as islands of identical vectors; our rule hopes that each object becomes such an island.
- Jaccard similarity
- The area two masks share divided by the area they cover together: one for identical masks and zero for masks that do not overlap.
- k-NN classifier
- A simple test of features with labels: a picture gets the label that wins a vote among the k labelled pictures whose features lie closest to its own. DINO weights the vote and lets the 20 nearest take part.
- Key
- In attention, the vector that a token offers to be matched against the other tokens' queries. The decoder of Part 6 reads the last block's keys as patch features.
- Key bias
- The fixed vector that the last attention block adds to every key. The network ignores it, because softmax cancels a shift that all scores share, but a decoder that compares raw keys does not.
- Key offset
- The part that every key of a picture shares, such as the key bias plus the effect of the LayerNorm's shift. Attention cancels it, yet it tilts all the keys towards one direction and raises every cosine between them.
- Key rule
- The label-free way the decoder prepares keys before comparing them: raw keys, bias-free keys or per-image mean subtraction. It must be the same for every model compared; the owner chose mean subtraction.
- KL divergence
- Cross-entropy minus the teacher's entropy: a distance between two probability distributions that is zero when they are equal.
- L2 normalisation
- Dividing a vector by its length so that its length becomes one; the vector then lies on the surface of a sphere.
- Lab
- An interactive panel of the course: a question, controls and a drawing that changes as you use them. A Toy lab computes a simplification in your browser; a Real lab draws numbers computed once from the real models.
- Label
- A human-made answer attached to a picture: the name of an object, a box drawn around it, or its exact outline. Training in this thesis never sees one.
- Label propagation
- A test of patch features that uses labels: the object masks drawn on the first frame of a video are carried from frame to frame by matching each patch with its nearest neighbours among the frozen patch features. SelfPatch reports it on the DAVIS 2017 videos.
- Label-free
- Learning without labels. In this thesis no label enters training or the choice between runs and checkpoints; labels are read only outside training, with every use recorded: on the validation panel, and once, at the very end, on a sealed test panel.
- Label-free decoder
- A fixed procedure that turns a network's features into object masks without using any labels. The thesis's decoder reads the teacher's last-block keys.
- Layer
- One stage of a network: weighted sums of its input plus biases, usually followed by a bend.
- LayerNorm
- A step that shifts and rescales the numbers of one token to mean 0 and spread 1, then multiplies them by a learned scale and adds a learned shift. ViT-S/16 has one before every attention step and every MLP.
- Learning rate
- The size of each step, η: how far a parameter moves for each unit of its gradient. In a real run it follows a schedule.
- Length
- Of a vector: the square root of its dot product with itself, written ‖a‖.
- Linear classifier
- A single linear map from features to class scores, fitted with labels: a common test of what the features already contain.
- Linear probe
- One linear layer trained with labels on top of a frozen network's tokens. How well it reads the classes off the tokens measures how linearly the tokens separate them; the network itself does not change.
- Local crop
- One of the small crops taken from each image at every step, 8 of them in SelfPatch's code and our runs. Each covers 0.05 to 0.25 of the image's area and is resized to 96 × 96 pixels.
- Logarithm
- Here the natural logarithm, ln, which undoes raising e, about 2.718, to a power: ln 1 = 0, and the logarithm of a small share is a large negative number.
- Logit
- A raw score for one class, before softmax turns the scores of all classes into probabilities. The largest logit is the prediction.
- Loss
- One number that scores how wrong a network's outputs are. Training makes it smaller.
- Mark
- The small badge that tells you what kind of statement you are reading: Fact, Real, Toy or Reading. Click or tap one to see where the statement comes from.
- MaskCut
- A label-free object finder that links patches with similar keys and splits the resulting graph with normalised cuts, one object at a time.
- mBO-i
- Mean best overlap over instances: the mean over the truth objects of each one's best IoU with any predicted region. One region may serve several objects.
- Mean
- The average: add up the numbers and divide by how many there are.
- Mean subtraction
- The key rule our decoder uses: subtract the average of one picture's keys from each of its keys. It removes any part that every key shares, the key bias included.
- Micro-batch
- A part of a batch that a card computes at one time. Our runs added up the gradients of 8 micro-batches of 32 images before each step.
- mIoU
- Mean intersection over union: for each class, the tokens correctly given that class over the union of the tokens that are that class and those predicted as it, averaged over the classes present.
- MLP
- Short for multilayer perceptron: linear layers with a bend between them. In each transformer block it widens every token from 384 numbers to 1,536 and narrows it back.
- Moment (in AdamW)
- One of the two running averages that AdamW keeps for every weight. The first moment, m, averages the weight's recent gradients; the second moment, v, averages their squares. AdamW moves the weight by the learning rate times m divided by the square root of v, so a weight with a steady gradient moves by about the learning rate, whatever the size of its gradient.
- Momentum
- The number m in the teacher's update, just below one, which sets how slowly the teacher follows the student. The centre's rate is the same kind of number: the larger it is, the slower the centre moves.
- Moving average
- Here, the teacher's weights: after each step every teacher weight moves a small part of the way to the student's weight, so the teacher is a smoothed average of the student's past.
- Multi-crop
- DINO's way of making views: a few large global crops and several small local crops of the same image.
- Multi-head self-attention (MSA)
- Attention run as several heads side by side inside one block, among the tokens of one picture, followed by a linear layer that joins the heads' results.
- Nat
- The unit of entropy and cross-entropy when the logarithm is the natural one.
- ncut score
- The decoder's confidence score for a mask: one minus the second eigenvalue of its cut, clipped to lie between zero and one.
- Negative
- A patch that a rule chooses for an anchor to disagree with. Under our rule: a patch of the same crop at or below the crop's low threshold, never one of the anchor's positives, at most 48 per anchor.
- Neural network
- A chain of layers of simple arithmetic whose weights and biases are learned from examples.
- Normalisation
- Rescaling pixel values before they enter the network: divide by 255, subtract the ImageNet mean and divide by the ImageNet standard deviation, channel by channel.
- Normalised cut
- A way to split a graph in two so that the links broken between the two groups are weak compared with all the links inside each group.
- Optimiser
- The rule that turns gradients into changes of the parameters at each step, such as plain gradient descent or AdamW.
- Optimiser step
- One update of every weight of the network, from the gradients of one batch of images. Our runs take 9,240 of them.
- Overlap
- In the pushes that were considered first, oij: the sum over the prototypes of the student's probability for anchor i times the teacher's target probability for patch j. It is 0 when the two share no prototype and 1 only when both put everything on the same one.
- Paired contrast
- The mean, over the same images, of one checkpoint's value minus another's on each image. Each image is compared with itself, so what makes an image easy or hard for both checkpoints cancels in its difference.
- Parameter
- A number inside a network that training adjusts: a weight or a bias.
- Patch
- A square of 16 × 16 pixels cut from the picture; ViT-S/16 turns each patch into one token. A crop of 224 pixels holds 196 patches.
- Patch embedding
- The learned linear layer that turns each patch's 768 numbers into a token of 384 numbers, the same for every patch; it has 295,296 parameters.
- Patch head
- SelfPatch's projection head for patches, with the same layers as the image-level head and 4,096 prototypes at its end. It turns a patch's target or prediction into one score per prototype.
- Pilot
- An earlier run of the project: DINO trained with SelfPatch's own window term under recipe LC0 for 20 epochs. It is run 2's comparator from the same DINO start.
- Pixel
- One tiny square of a digital picture. A colour pixel stores three whole numbers from 0 to 255: its red, green and blue.
- Position embedding
- A learned table with one row per grid position, added to the tokens so that the network can tell where each patch came from.
- Positive
- A candidate that the selection rule keeps for an anchor; SelfPatch keeps the 4 most similar of the 8. The anchor's target is built from its positives only.
- Probability distribution
- A list of shares, one per option, none negative and all adding up to 1.
- Projection head
- The small network after the backbone that turns a crop's summary into scores over the prototypes. It exists for training; later tasks read the backbone.
- Prototype
- One of the learned directions that the projection head compares its output with; DINO's head has 65,536 of them.
- Quantile
- The value below which a given share of a sorted list falls. The 0.20 quantile of a crop's cosines has a fifth of them at or below it; between two sorted values, linear interpolation takes the point in between.
- Query
- In attention, the vector that says what a token is looking for; it is matched against every token's key.
- Query token
- The single learned token that asks in class attention: 384 numbers, the same for every anchor. Its answer, after the blocks, is the summary.
- Reading
- What we ran and what it showed, quoted from our reading notes and never claimed beyond them.
- Real
- A number computed once from the real models on real images, stored in the data files of this course and drawn by the page. Its mark names the file and the member.
- Recall
- The share of the truth objects' pixels that some predicted region covers. It is a credit: higher is better.
- Region
- A group of patches that the decoder puts together, its guess at one object. Our decoder makes at most five per picture.
- ReLU
- Short for rectified linear unit: the bend max(0, z). A positive number passes unchanged and a negative one becomes 0.
- Repository
- A folder of code and documents whose history of changes is recorded, so that any earlier version can be recovered. The paths of this course, such as
cluster/train.py, start at the root of the thesis repository. - Residual connection
- Adding a step's input back onto its output, so that the step only has to learn a change and the token passes straight through. DINO calls them skip connections.
- Seed
- The number from which a run draws everything random: in our runs the order of the images in each epoch, the crops of every image, the random numbers of every step and, from the DINO start, the first weights of the fresh heads. Two runs that differ only in their seed differ by chance alone. Our first runs used seed 906; the second seed pair uses 907.
- Seed patch
- The patch where the decoder's mask starts: the largest entry of the Fiedler vector on the side that is kept, or of its negative when the sides were swapped. MaskCut keeps the connected part of that side that contains it. It differs from the patch with the largest entry ignoring its sign only when the corners swap the sides although that patch lay on the chosen side.
- Segmentation
- Dividing a picture into regions, for example one region per object.
- Selection mask
- For every anchor patch, one yes-or-no mark per candidate neighbour: yes where that neighbour is kept as a positive. It has the same shape as the table of similarities it was made from.
- Self-distillation
- Distillation in which the teacher is built from the student itself: in DINO, as a moving average of the student's past weights.
- Self-supervised learning
- Training whose task is made from the pictures themselves, so that no label is needed.
- SHA-256 sum
- A fingerprint of a file: 64 characters, each a digit or a letter from a to f, computed from every byte of it. Change one byte and the sum changes completely, so two files with equal sums hold, in practice, the same bytes.
- Shape
- The list of a tensor's side lengths, such as 3 × 224 × 224 for a colour crop.
- Sharpening
- Using a low teacher temperature so that the teacher's probabilities clearly favour a few prototypes.
- Softmax
- The function that turns scores into shares that add up to 1: raise e to each score, then divide each result by their sum.
- Solarise
- An augmentation that keeps every pixel value below 128 and turns every value v of 128 or more into 255 − v, so the bright parts turn dark.
- Source tag
- The short name in square brackets that a Fact or a Reading mark gives for its source, such as
[DINO §3.1]or[protocol 2026-10-08 §3.2]. Section 8.3 says which paper or file each tag points to. - Standard deviation
- A measure of how widely values spread around their mean.
- Step
- One round of training: compute the loss on a batch, compute the gradient, and move the weights one small step. Also called an update.
- Stochastic depth
- A training trick in which the student randomly skips a block's residual branches, its attention and MLP steps, for some pictures.
- Stop-gradient
- Holding a quantity fixed while the gradient is computed, so that no learning flows through it; DINO applies it to the teacher's outputs.
- Student
- The network that learns from the loss.
- Supervised learning
- Training whose loss compares the network's answers with labels.
- Teacher
- The network whose outputs the student learns to match. In DINO it is an average of the student's past weights and receives no gradient.
- Telemetry (progress line)
- The numbers a trainer writes about itself while it runs: one line per optimiser step with the losses, the learning rates and the rule's statistics, read afterwards to see how training went.
- Temperature
- A number τ that divides the scores before a softmax: a smaller τ gives sharper shares, a larger τ flatter ones.
- Tensor
- A block of numbers arranged along several axes, such as a picture's channels, rows and columns.
- Tensor shape
- The size of a block of numbers along each of its directions, written with × between the sizes. For a stack of crops it reads: pictures × colour channels × height × width.
- Test panel
- A separate set of photographs whose labels are sealed and opened only once, at the very end, by one evaluator run. Our contrastive study never opens one.
- Token
- The vector of 384 numbers that the transformer makes for one square patch of 16 by 16 pixels (Part 2).
- Toy
- A simplification that the page computes in your browser to show how an idea works. Its numbers measure nothing about the real model.
- Toy step
- One training step of a lab's toy. The gradient moves the toy's tokens directly, each is scaled back to length 1, and in Lab N the teacher's tokens move a tenth of the way towards the student's. A real step moves the network's weights instead.
- Transformer block
- The repeated unit of a Vision Transformer: attention among the tokens, then an MLP on each token, each with a LayerNorm before it and a residual connection around it. ViT-S/16 stacks 12 of them.
- Truth mask
- The outline that a person drew around one object of a photograph, used only after training: by the evaluator, after the predictions are sealed, and by the linear probe.
- Twin (LC0 twin)
- One of the campaign's two runs of pair 1 under recipe LC0, trained with SelfPatch's own patch term from run 1's start, with the same seed, images, order and crops as run 1: the row twin with SelfPatch's rule, the image twin with the pooled rule.
- Unit vector
- A vector of length 1. Dividing any vector other than zero by its length gives the unit vector that points the same way.
- Validation panel
- A set of photographs whose labels may be read, every use recorded in a ledger, to check the decoder and to read trained networks, and never to choose between runs or checkpoints. Ours is the COCO v4 panel of 1,000 photographs.
- Value
- In attention, the vector that a token hands over; each token's output is a weighted sum of the values.
- Vector
- An ordered list of numbers, which you can picture as an arrow from the origin.
- Verdict (different, equivalent)
- The conclusion that a pre-registered rule draws from an interval over several seeds: different when the 95 % interval leaves out zero and the mean difference exceeds a margin fixed in advance, equivalent when the 90 % interval lies inside that margin, and inconclusive otherwise. One seed gives no interval over seeds, so the readings of a single run declare none.
- View
- One changed version of a training image: a crop with its augmentations.
- ViT (Vision Transformer)
- A network that cuts a picture into patches, turns each patch into a token and passes the tokens through transformer blocks.
- ViT-S/16
- The small Vision Transformer with patches of 16 pixels that every model of this course uses: 12 blocks, tokens of 384 numbers, 6 heads.
- Warm-up
- A period at the start of training in which the learning rate rises gradually to its peak.
- Weight
- A learned number that multiplies one input of a layer.
- Weight decay
- A small pull of every weight towards zero at each step, which keeps weights from growing large. A bigger weight-decay number means a stronger pull.
- Why card
- A box that explains one choice of a paper or of our protocol in five fields: Decision, Why, Evidence, What it does to training, and If you changed it. Part 8 collects every card in its why ledger.
- Window
- The 3 by 3 square of patches centred on an anchor. Its 8 cells other than the anchor are the anchor's candidates; in SelfPatch's code it wraps round the border of the grid.
- Within-object cosine
- In Lab N, the mean cosine between two patches of the same object: cat with cat, ball with ball, fence with fence. The grass, the background, is counted on its own. When it rises while the cosine between patches of different kinds falls, islands are forming.
- Wrap-around
- The official code's rule at the border of the grid: the window continues on the opposite edge, so every anchor has exactly 8 candidates.
- Zero-region rule
- The evaluator's rule that a prediction with no region on a picture that holds an object gets no credit: zero on every credit and the worst value, one, on the background false-positive rate.
8.3 Sources
Click or tap a Fact or a Reading mark and its box names a source, mostly as a short source tag in square brackets, such as [DINO §3.1] or [protocol 2026-10-08 §3.2]; a Real mark names a data file and a member, such as followed.json#anchor. A paper's tag can add a place in it: § marks a section, Tab. a table, Fig. a figure, Eq. an equation, App. an appendix, supp. the paper's supplement and p. a page, so [SelfPatch Tab. 4] is Table 4 of the SelfPatch paper. A code tag adds a line, as in [code: cluster/contrastive.py:177], and [arithmetic] marks a calculation from sourced numbers whose fact entry writes out the formula and its inputs. Fact
Paths start at the root of the thesis repository. A line that the fact entries of the course's sheet cite holds at commit dcae242, the commit on which the sheet was begun, so git show dcae242:<path> prints a file as the course read it, whatever the file holds later; a source written path@commit:line pins its line to that commit. The entries imported from the first explainer keep that course's citations, whose commits its own fact-sheet README names in its section 5: docs/research/explainer_2026-09-28/facts/README.md. Fact
On 13 October 2026, of all the tracked documents and code that this section names, only the execution record of the second seed pair had changed since dcae242: it is still being appended to, and the sheet cites it as it stood at that commit. The papers' PDFs, their text copies and the vendored code repositories under research/references/ are not tracked by git, nor is anything under .superpowers/; facts/README.md, section 5, pins the paper files that the sheet cites by their SHA-256 sums. Fact
Papers the course quotes
The course quotes these papers through its fact sheets, which give every place exactly; the paper of the normalised cut is listed as the origin of the cut that Part 6 teaches through MaskCut. The DOIs come from the DOI registry's records that our source audit saved, or from our inventory of the papers that the repository keeps, docs/research/selection_scope_2026-09-27/02_local_corpus_inventory.md; the arXiv numbers come from the papers' code pages, from our source audit of GLOM and from the same inventory. Where the inventory records two different DOIs for one paper, this page gives none. This page did not check the identifiers against the publishers again, so check one before you cite it. Fact
[DINO],[DINO abstract],[DINO supp.]- Caron et al., Emerging Properties in Self-Supervised Vision Transformers, ICCV 2021. arXiv
2104.14294; DOI10.1109/iccv48922.2021.00951. Paperresearch/references/papers/caron_dino_iccv2021.pdf, with its text copyresearch/audits/base_papers_text/caron_dino_iccv2021.txt; supplementresearch/references/papers/base_audit_20260914_root/dino_cvf_supplement.pdf, with its text copyresearch/audits/base_sources_20260914/root/dino_cvf_supplement.txt. The method of Part 3. Fact [SelfPatch],[SelfPatch supp.]- Yun, Lee, Kim and Shin, Patch-Level Representation Learning for Self-Supervised Vision Transformers, CVPR 2022. arXiv
2206.07990; DOI10.1109/cvpr52688.2022.00817. Paperresearch/references/papers/base_audit_20260914_selfpatch/selfpatch_cvpr2022_paper.pdf, with its text copyresearch/audits/base_papers_text/yun_selfpatch_cvpr2022.txt; supplementresearch/references/papers/base_audit_20260914_selfpatch/selfpatch_cvpr2022_supplement.pdf. The method of Part 4. Fact [GLOM],[GLOM abstract]- Hinton, How to represent part-whole hierarchies in a neural network, 2021. arXiv
2102.12627. Paperresearch/references/papers/hinton_glom_2021.pdf, with its text copyresearch/audits/base_papers_text/hinton_glom_2021.txt; our source auditresearch/audits/glom_access_20260914/glom_source_audit.md. On its first page the paper says that it does not describe a working system; Part 5 uses it as a picture. Fact [CutLER],[CutLER README],[MaskCut code]- Wang, Girdhar, Yu and Misra, Cut and Learn for Unsupervised Object Detection and Instance Segmentation, CVPR 2023, the paper that introduces MaskCut. arXiv
2301.11320; DOI10.1109/CVPR52729.2023.00305. Paperresearch/references/papers/CutLER_2023.pdf, with its text copyresearch/audits/base_papers_text/CutLER_2023.txt; its coderesearch/references/repos/CutLER/, MaskCut inmaskcut/maskcut.py. The decoder of Part 6 follows its rules. Fact - TokenCut
- Wang, Shen, Hu, Yuan, Crowley and Vaufreydaz, Self-Supervised Transformers for Unsupervised Object Discovery Using Normalized Cut, CVPR 2022. arXiv
2202.11539; the inventory records two different DOIs for it, so none is given here. Paperresearch/references/papers/tokencut_2022.pdf. Named in Parts 2, 3 and 6 as a label-free method that, like MaskCut, reads the keys of the last block. Fact - The normalised cut
- Shi and Malik, Normalized Cuts and Image Segmentation, IEEE TPAMI 22(8):888-905, 2000. DOI
10.1109/34.868688. Paperresearch/references/papers/dense_correspondence_20260914/shi_malik_2000_ncut.pdf. The origin of the cut that TokenCut and MaskCut apply to a graph of patches; Part 6 teaches the cut through MaskCut's paper and code and quotes nothing from this paper. Fact [DINOv2 paper]- Oquab et al., DINOv2: Learning Robust Visual Features without Supervision, Transactions on Machine Learning Research, 01/2024. arXiv
2304.07193. Paperresearch/references/papers/dino_v2_2023.pdf, with its text copyresearch/audits/base_papers_text/dino_v2_2023.txt. Part 3 quotes it for the number of ImageNet's training photographs. Fact
Works the course names without quoting them
The course names these works as rows of the tables of DINO and SelfPatch, as precedents of run 3's projection head, or, in section 5.11, as related work that the lead's readers found. It quotes no number from them directly: what it says of them comes from the papers above, from our documents and code, or from the lead's summary. Their identifiers are given where our inventory of papers holds them. Fact
- He, Fan, Wu, Xie and Girshick, Momentum Contrast for Unsupervised Visual Representation Learning, CVPR 2020 (MoCo): arXiv
1911.05722; DOI10.1109/CVPR42600.2020.00975; paperresearch/references/papers/moco_2020.pdf. Named in Part 3. Fact - Caron et al., SwAV, NeurIPS 2020: arXiv
2006.09882; no local copy. BYOL: our inventory holds no entry for it. Both are rows of DINO's Table 7 in Part 3. Fact - Li et al., Efficient Self-supervised Vision Transformers for Representation Learning, ICLR 2022 (EsViT): arXiv
2106.09785; OpenReviewfVu3o-YUGQK; paperresearch/references/papers/swin_ssl_audit_20260914/esvit_arxiv.pdf. Named in Part 4. Fact - Xie et al., Self-Supervised Learning with Swin Transformers, 2021, the paper of MoBY: arXiv
2105.04553; paperresearch/references/papers/swin_ssl_audit_20260914/moby_arxiv.pdf. Named in Part 5. Fact - Chen et al., SimCLR, ICML 2020: arXiv
2002.05709; no local copy. Wang, Zhang, Shen, Kong and Li, Dense Contrastive Learning for Self-Supervised Visual Pre-Training, CVPR 2021 (DenseCL): arXiv2011.09157, two different DOIs in our records; paperresearch/references/papers/densecl_2021.pdf. Both are named in Part 5 as precedents of run 3's head. Fact - Ziegler and Asano, Self-Supervised Learning of Object Parts for Semantic Segmentation, CVPR 2022 (Leopart): arXiv
2204.13101; DOI10.1109/CVPR52688.2022.01410; paperresearch/audits/citation_chain_20260914/papers/leopart_cvf.pdf. Lebailly, Stegmuller, Bozorgtabar, Thiran and Tuytelaars, CrIBo: Self-Supervised Learning via Cross-Image Object-Level Bootstrapping, ICLR 2024: arXiv2310.07855; OpenReview3M0GXoUEzP; paperresearch/audits/citation_chain_20260914/papers/cribo_arxiv.pdf. Both are named in Part 5 as precedents of run 3's head. Fact - Bardes, Ponce and LeCun, VICRegL: Self-Supervised Learning of Local Visual Features, NeurIPS 2022: arXiv
2210.01571; DOI10.52202/068431-0640; paperresearch/references/papers/bardes_vicregl_neurips2022.pdf. Seong, Moon, Lee and Heo, Leveraging Hidden Positives for Unsupervised Semantic Segmentation, CVPR 2023: the inventory gives no DOI and no arXiv number; paperresearch/references/papers/HP_2023.pdf. AdaSim, ICCV 2023: arXiv2303.13606, and FLSL, NeurIPS 2023: arXiv2306.06203, which the inventory lists as found by a web search, with no local copy. All four are named in section 5.11. Fact - The other works of section 5.11, as the lead's summary gives them: the Composer, ICLR 2024 submission 297, withdrawn, OpenReview
JAfGlmRBTU; Zeng, Song, Zhang, Hu and Yu, ICCV 2025, pages 24351 to 24359; CoViT, arXiv2609.01787; and SmooSeg, CAUSE, CoTAP, CtCAE, DiffNCuts, SimDINO, Global-Local Self-Distillation, ASL and LiFT, for which the summary gives no identifier. Our inventory of papers has no entry of its own for any of them. Fact
Our protocols, records and reading notes
The contrastive runs are documented under docs/protocols/: what was fixed before each run, what was done, and what each reading showed. Each tag below is the one the marks use, and the fact entries that carry it name the file beside it in their sources. Each description repeats the file's own title. Fact
[protocol 2026-10-08]docs/protocols/2026-10-08-supervisor-contrastive-run-protocol.md: the protocol of the contrastive run on the released start, the supervisor's rule in one run; its section 3.2 states the rule as built. Fact[execution record 2026-10-09]docs/protocols/2026-10-09-supervisor-contrastive-run-execution-record.md: the execution record of the contrastive run's launch procedure, run 1. Fact[execution record 2026-10-10, run 2],[..., run 3]docs/protocols/2026-10-10-con-run2-execution-record.mdanddocs/protocols/2026-10-10-con-run3-execution-record.md: the execution records of run 2, the DINO start, and of run 3, the projection head. Fact[execution record 2026-10-12]docs/protocols/2026-10-12-con-seed-pair2-execution-record.md: the execution record of the second seed pair, still being appended to; the fact sheet cites it as it stood at commitdcae242. Fact[amendment 2026-10-10, run 2],[..., run 3]docs/protocols/2026-10-10-con-run2-dino-start-amendment.mdanddocs/protocols/2026-10-10-con-run3-projection-head-amendment.md: the prospective amendments of run 2, the DINO start, and of run 3, the projection head. Fact[amendment 2026-10-12]docs/protocols/2026-10-12-con-seed-pair2-amendment.md: the prospective amendment of the contrastive runs' second seed pair. Fact[early look 2026-10-09, epoch 5],[..., epoch 10]docs/protocols/2026-10-09-con-early-look-ep005.mdanddocs/protocols/2026-10-09-con-early-look-ep010.md: the lead's notes on the early looks at epochs 5 and 10 of the contrastive run, run 1. Fact[early look 2026-10-10, run 2, epoch 5],[..., epoch 10]docs/protocols/2026-10-10-con2-early-look-ep005.mdanddocs/protocols/2026-10-10-con2-early-look-ep010.md: the lead's notes on the early looks at epochs 5 and 10 of run 2, the DINO start. Fact[reading 2026-10-10]docs/protocols/2026-10-10-con-validation-reading.md: the validation reading of the contrastive run, run 1. Fact[reading 2026-10-11, run 2],[..., run 3]docs/protocols/2026-10-11-con2-validation-reading.mdanddocs/protocols/2026-10-11-con3-validation-reading.md: the validation readings at epoch 20 of run 2, the DINO start, and of run 3, the projection head. Fact[probe protocol 2026-10-10]docs/protocols/2026-10-10-linear-probe-protocol.md: the protocol of the linear probe of frozen patch tokens. Fact[probe reading 2026-10-10]docs/protocols/2026-10-10-linear-probe-reading.md: the reading of the linear probes 1 to 6, beside the probe's execution recorddocs/protocols/2026-10-10-linear-probe-execution-record.md, which its fact entries also cite. Fact[validation ledger]docs/protocols/validation_use_ledger.md: the ledger of validation labels, with a row for every use of one. Fact
Our designs, reports and notes
[spec 2026-10-08],[our run spec]docs/superpowers/specs/2026-10-08-supervisor-contrastive-run-design.md: the design of the contrastive run, the supervisor's rule in one run, with non-local positives and negatives and a contrastive patch loss. Fact[our non-local spec]docs/superpowers/specs/2026-10-08-nonlocal-selection-design.md: the first design of the supervisor's proposal, as a follow-up study with a bounded push. Fact[design addendum 2026-10-08],[our design addendum]docs/research/explainer_2026-09-28/design_nonlocal_2026-10-08.md: the design addendum of the first explainer's part on the non-local idea, with the owner's decisions of 8 October 2026. Fact[our premise test]research/audits/nonlocal_premise_20261008/v2/premise.md: the offline premise test of non-local selection. Fact[second premise test],[our second premise test]research/audits/contrastive_premise_20261008/v2/premise.md: the contrastive run's second premise test, in the version that is its reading of record. Fact[our spec]docs/superpowers/specs/2026-09-26-quality-first-campaign-design.md: the design of the quality-first SelfPatch campaign. Fact[our report],[our research brief]docs/research/selection_scope_2026-09-27/05_report_final_v2.md, the final report on whether pooled-quantile selection scope works and whether a new loss is needed, anddocs/research/selection_scope_2026-09-27/00_research_brief.md, its brief. Fact[our addendum 01b],[our addendum 01c]docs/research/selection_scope_2026-09-27/01b_project_evidence_addendum_r3.md, an addendum to the project evidence written during the research run, anddocs/research/selection_scope_2026-09-27/01c_addendum_key_bias.md, its correction about the released SelfPatch row. Fact[our architecture doc],[our parameter count],[our architecture proposal]docs/research/selection_scope_2026-09-27/architecture/10_architecture_current_v2.md, the architecture as built;docs/research/selection_scope_2026-09-27/architecture/10_param_counts_output.txt, the parameter counts from the layer definitions; anddocs/research/selection_scope_2026-09-27/architecture/11_architecture_proposed_v2.md, the proposed method of protected pooled selection with bounded repulsion. Fact[our audit 2026-09-19]docs/audits/selfpatch_coco_reproduction_results_2026-09-19.md: the results of our reproduction of SelfPatch's COCO checkpoint. Not tracked by git. Fact[our status note 2026-09-26],[our thesis tables]- a status note on the project's state, results and architecture, and
thesis/tables/, the tables of the selector campaign in the thesis folder, among themcampaign_runs.tex,campaign_arms.tex,campaign_bars.texandcampaign_contrast.tex. Fact [our owner decisions],[our schedule],[our runbook]docs/protocols/2026-09-29-owner-decisions.md, the owner's decisions of 29 September 2026;docs/protocols/2026-09-29-experiment-schedule.md, the planned experiments and their expected times; anddocs/protocols/2026-09-26-campaign-runbook.md, the campaign's runbook, in which every real run waits for the owner's go-ahead. Fact[our key-rule checks]research/audits/quality_first_campaign_2026/key_rule_checks_20260929T074717/andresearch/audits/quality_first_campaign_2026/key_bias_screen_20260929T074717/: the key rule's three label-free checks on the CPU, among them the key-bias screen. Fact[our cluster facts]cluster/CLUSTER.md: the facts of the compute cluster, filled in on 29 September 2026. Fact[our run ledger],[our LC1 build report].superpowers/sdd/progress.md, the ledger of our workflows and runbook items, and.superpowers/sdd/lc1/task-4-report.md, a task report of the LC1 build. Neither is tracked by git; the first explainer's fact-sheet README, section 5, says how the ledger's cited lines are read. Fact[evaluation summaries]- The evaluator's summary files of the three final readings, under
research/audits/con_followup_2026/:coco_v4_ep020_20261010T032143/summary.json,coco_v4_con2_ep020_20261010T180059/summary.jsonandcoco_v4_con3_ep020_20261011T115638/summary.json. Part 6 quotes their decoder counts. Fact [spec 2026-10-13],[plan 2026-10-13]docs/superpowers/specs/2026-10-13-explainer-v2-design.md, the design of this course, anddocs/superpowers/plans/2026-10-13-explainer-v2-build.md, its build plan. Fact[related-work summary 2026-10-13].superpowers/sdd/explainer_v2/related_work_summary.md: the lead's summary for section 5.11 of two paper reports and of the literature sweep of 12 October 2026, whose three reports sit in the lead's working folder outside the repository. Not tracked by git:6,243bytes, SHA-25611a4e516e85406d62c5d9ff3b8e9ebda8d5ad73a0b5094dc1a0dd8a39164782don 13 October 2026. FactAGENTS.mdAGENTS.md: the thesis's working agreement, which the start page cites for the scope of the thesis and its rules on labels. Fact
Code and configuration
[code: cluster/...],[our code: cluster/...]cluster/: our training package, which contains no annotation reader. The marks name its filescontrastive.py(the rule, its loss and run 3's projection head),train.py(the trainer, its schedules and its progress line),selection.py(the selector arms around SelfPatch's official parts, and DINO's global term as the contrastive runs use it),contract.py,recipe.py,dataset.py,convert_dino.pyandREADME.md. Fact[official code: main_selfpatch.py],[official code: utils.py],[code: selfpatch_vision_transformer.py]cluster/selfpatch_official/: byte copies of the official SelfPatch filesmain_selfpatch.py,utils.pyandselfpatch_vision_transformer.pyat the official repository's commit81aef149. Fact[code: src/decoder_v2.py],[code: src/key_rule_v2.py]src/decoder_v2.py(the frozen decoder,maskcut_core_v2andrun_decoder),src/key_rule_v2.py(the key rule),src/attention_keys_v2.py(the last block's keys),src/feature_extractor_v2.py(the model loaders and the input tensors of the export) andsrc/mask_refine.py(the bilateral refinement). Fact[decoder config]configs/decoder_v2_frozen_v2.json: the frozen configuration of the decoder, SHA-256b9cbe9d561c04ed9ef50b7e762cab558245253ec1fe1697f9c9e37345d053e75, the value that the bundle's manifest records for the copy the bundle used. Fact[code: evaluation/...],[code: scripts/evaluate_sealed_v2.py]evaluation/metrics_v2.py,evaluation/metrics.py,evaluation/ap_v2.pyandevaluation/category_agnostic_ap.py, the scores of the readings, andscripts/evaluate_sealed_v2.py, the evaluator that computes them;scripts/linear_probe_v2.pyis the linear probe. Fact[DINO code],[DINO README],[DINO release args],[DINO release log]research/references/repos/DINO/, DINO's released code (README.md,main_dino.py,vision_transformer.py), and the public training settings and log of the released DINO ViT-S/16,research/audits/base_sources_20260914/root/dino_vits16_args.txtanddino_vits16_trainlog.txt. Fact[SelfPatch README]research/references/repos/SelfPatch/README.md: the README of SelfPatch's released code. Fact[PyTorch docs],[torch docs: ...],[torchvision docs],[Pillow docs]- The documentation strings of the installed libraries under
.venv-repro/Lib/site-packages/:torch(for exampletorch/optim/adamw.pyandtorch/nn/modules/activation.py),torchvisionandPIL. Fact [NIST FIPS 180-4],[Git documentation]- The Secure Hash Standard, which defines SHA-256, and Git's documentation of commits and object names, cited in Part 7. Neither is a file of the repository. Fact
This course's own files
- The course's folder
docs/research/explainer_v2_2026-10-13/, withdesign.md(sections 3 to 12 of the course's design) andREADME.md(how to build, check and publish the course). Fact[course code: src/...]src/: the copy of each part (sections_*.html), its labs (labs_p1.jstolabs_p7.js) and glossaries (glossary_*.html), the runtime (core.js,scenes.js,toy_vit.js,boot.js), the stylesheetstyles.css, the toy values of the labslabs_defaults.jsonand the reading timesreading_times.json. Fact- The build and the checks
build/assemble.pybuilds the nine pages, this page's ledger and glossary and the reading times;build/make_bundle.pyandbuild/bundle_box.shmade the data bundle.tests/check_page.pychecks every page,tests/check_facts.pythe fact sheets,tests/check_bundle.pythe data against its manifest, andtests/run_node_checks.jsthe runtime's pure functions, cross-checked against the bundle;tests/smoke_p1.jstotests/smoke_p7.jsmount the labs of each part. Fact- The fact sheets
facts/course_facts.json,facts/bundle_facts.jsonandfacts/README.md, which says how to read every source string of the sheets. Every number of three or more digits in the copy comes from a sheet or from the labs' toy values, andtests/check_page.pyrefuses any other. Fact- The first explainer
docs/research/explainer_2026-09-28/: the course this one ports its first labs and its imported fact entries from. Fact
The data bundle and its manifest
Every Real mark points into the data files under data/ of the course's folder, which the build copies beside the pages. The files were computed once, on 13 October 2026, by build/make_bundle.py on the CPU of the compute server gpu01, from eight COCO train2017 photographs of the image-only pool and five models; no label, mask, box, category or caption was read, and no GPU was used. Fact
- The manifest
data/bundle_manifest.json:26,734bytes, SHA-25683931c691e3aad6d4a90f065719f303b39b7e74cf6eea15cae24d5cfefc793a1, committed with the bundle in commitb6c3211and unchanged since. It records the script, its environment and the export package's commit; every input with its SHA-256: the photographs, the two released weight files and the final checkpoints of runs 1 to 3, the followed anchor and the training logs of the three runs; and every output file with its SHA-256 and size, 77 files of24,569,094bytes in all. Fact- The script and its facts
build/make_bundle.py, SHA-256d7ca2087cb3cb2362eb351c17e2eb86c8360053f2d258f807e6b84324fb73b67, and the fact sheet it wrote,facts/bundle_facts.json, SHA-256684bf227c828a6bb689edb945ffebfef073e9a2185ad85a31f218ce435aba7ba, the real numbers that the copy may quote: both files equal the sums that the manifest records. Fact- The photographs
data/images/<id>.jpg: the eight photographs, whichtests/check_bundle.pychecks against the manifest's sums and against the image-only pool manifestdata/manifests/coco_train2017_pool_v2.json. Fact- Checked on every build
tests/check_page.pyfails a page that loads a data file which is missing, is not listed in the manifest or has other bytes than the SHA-256 that the manifest records. Section 7.3 of the film's page lists the five files the film reads, with their sums. Fact
For what the film of Part 7 reads, file by file, see section 7.3; for the related work that the lead's summary feeds, see section 5.11. Fact