How it works

The last layer decides what kind of number you get

A model can produce a score by predicting a continuous value or by picking a bucket, and the two behave differently at the extremes.

4 min readHow it works

By the time an embedding reaches the final layer of a scoring model, the number it produces has already been shaped by a design decision made long before any photo was uploaded: whether that last layer treats the score as a continuous quantity or as a choice among discrete buckets. The two approaches are called regression and classification, and they produce numbers that look similar on screen but were arrived at in structurally different ways.

Regression: predicting a value directly

A regression head outputs a single real number, trained to land as close as possible to the target score it was shown during training. If the training labels were, say, 1 through 10, the head learns a function that maps an embedding to somewhere in that range, and the loss used to train it typically penalises the squared or absolute distance between its guess and the true label.

Because the training signal rewards getting close rather than getting exactly right, a regression head has a structural pull toward the centre of the range. Predicting near the middle is a safe bet against a training set where extreme values are rarer than middling ones, since a middling guess is never catastrophically wrong even when it is wrong, while a confident extreme guess can be. This compression toward the middle is a big part of the mechanism behind why almost everyone gets a 6 or 7, though that post covers the fuller set of causes rather than this one alone.

Classification: picking a bucket

A classification head instead treats each possible score - 1, 2, 3, and so on - as a separate category, and outputs a probability for each one, usually via a softmax layer that forces the probabilities to sum to one. The final score shown is typically whichever bucket got the highest probability, or occasionally a weighted average across buckets. What that probability distribution actually represents, and why a high probability for one bucket is not the same as the model being sure, is covered separately in softmax "confidence" is not the model being sure; this post is about the design choice itself rather than what its output means.

Bucketed models tend to produce visibly clumpier results than regression models - scores land squarely on whole numbers with no fractional texture, and the boundary between two adjacent buckets can be crossed by a small change in input that pushes the top probability from one bucket to its neighbour, producing a jump rather than a gradual slide.

What this looks like at the extremes

The two approaches diverge most clearly at the top and bottom of the scale. A regression head, pulled toward the mean by its training signal, tends to under-predict at the extremes - genuinely exceptional inputs get pulled a little toward the middle, which is part of why a ten is almost never given even when the training data contained some. A classification head does not have quite the same pull, since each bucket is judged independently, but it suffers instead from data scarcity: if the training set had few examples labelled at the extremes, the network had little to learn an extreme category from, and its confidence there is thin regardless of what the input actually looks like.

An ordinal regression approach - a middle path that treats the scale as ordered categories rather than either an unordered classification problem or a plain numeric target - is a further variant worth knowing exists, though the deeper question of what treating gaps between scores as equal amounts actually assumes is its own subject rather than a detail to fold in here.

Why this is invisible from outside

None of this is something a user can tell apart by looking at a result. A 7 from a regression head and a 7 from a classification head look identical on screen, and the interface has no obligation to disclose which one produced it. What you can sometimes infer is behaviour: scores that move in smooth small increments across repeated tests suggest regression; scores that jump between whole numbers with nothing in between suggest buckets. Rate Cock reports scores to one decimal place on some axes, which is a design choice consistent with a regression-style head rather than a proof of one - the interface reflects a decision, not a guarantee about the architecture underneath.

Whichever design is in use underneath, the number it produces is still the output of the underlying position in the model's embedding space rather than anything measured on the photo - a point covered more fully in latent space, explained with a rating tool in mind. Comparing that number against a human reviewer's judgement, which never goes through either a regression or a classification step, is a different question again, one Rate Penis is better placed to answer than a mechanism post. For a figure that involves neither head design, Measure My Cock's method starts and ends with a tape, and reading what any resulting number actually supports is covered from the user's side by Penis Rater.

Read next

Full archive