{ "lesson": "58-vision-encoder-patches", "title": "Vision Encoder Patches", "questions": [ { "stage": "pre", "question": "Why does a Vision Transformer use patches instead of feeding one pixel per token?", "options": [ "Patches are required by PyTorch", "Pixel-per-token sequences explode attention compute quadratically and lose tractability at typical resolutions", "Patches improve image quality", "It avoids using a tokenizer" ], "correct": 1, "explanation": "A 224x224 image is 150528 pixel tokens. Attention is quadratic in length, so 16x16 patching shrinks the sequence to 196 tokens and makes the model tractable." }, { "stage": "pre", "question": "What is the relationship between Conv2d with kernel = stride = patch_size and flatten-then-linear?", "options": [ "Conv2d adds non-linearity", "They produce different outputs", "Conv2d is a faster way to spell the same linear projection over each patch", "Flatten-then-linear is impossible" ], "correct": 2, "explanation": "Each Conv2d output location dot-products the patch pixels with one filter, which is identical to flatten-then-linear." }, { "stage": "check", "question": "Why is the 2D sinusoidal position embedding deterministic instead of learned?", "options": [ "Fixed sin/cos signals interpolate cleanly to grids the model never saw, which is useful when resolution changes", "Random init is required", "It saves disk space", "Learned positions are illegal" ], "correct": 0, "explanation": "Fixed sinusoidal positions are deterministic across resolutions and let the same encoder run on inputs it was not trained on." }, { "stage": "check", "question": "What is the output sequence length of a 224x224 image with patch_size=16 and one CLS token?", "options": [ "224", "256", "196", "197" ], "correct": 3, "explanation": "224/16 = 14, so 14x14 = 196 patches, plus one CLS token for 197 total tokens." }, { "stage": "check", "question": "Why is reconstruction (unfold then unflatten) a useful sanity check on the patch front end?", "options": [ "It speeds up inference", "Round-tripping pixels through patch-flatten with no projection must equal the input; failure means the unfold math is wrong", "It improves accuracy", "It is required by ONNX" ], "correct": 1, "explanation": "The patch step is invertible without projection. If the round-trip drifts, the unfold logic is bugged and the rest of the encoder is unsafe." }, { "stage": "post", "question": "What changes when you swap a learned position embedding for the 2D sinusoidal one in this lesson?", "options": [ "Nothing changes", "Sinusoidal positions are random per step", "Learned positions can fit a fixed resolution slightly better; sinusoidal positions transfer to new resolutions without retraining", "Sinusoidal positions cost more parameters" ], "correct": 2, "explanation": "Learned positions are flexible at one resolution. Sinusoidal positions cost zero parameters and survive resolution shifts." } ] }