Pokerese Lab - v1
A tiny language.
A model you can inspect.
Pokerese is a tiny, purpose-built poker language plus a deliberately small transformer. Explore how a model learns poker expressed in symbols: follow recorded situations into tokens, through training, and out as generated Pokerese. The Lab makes the process inspectable.
An educational research experiment, not a poker solver, production advice engine, or claim of optimal strategy.
Two blocks - 32 dimensions - 4 heads - 101,792 parameters - random start - 12 recorded epochs.
The inherited-hero world follows one continuing player through each tournament. Only that player's decisions become learning examples; the torch passes when they bust. The 250 tournaments are split whole: 200 train, 25 validation, 25 test. PKRT supplies copied data, not a runtime service.
Research history and corpus evidenceStart with a poker decision
Custom situation compilation is available only in the local research environment. Explore the recorded examples below.
This authentic validation/test example was excluded from parameter training. Its teacher target is shown for inspection, never passed into inference.
Your situation in Pokerese
This is plain text. These tokens describe the situation the model receives before it produces an answer.
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET FLOP TABLE_SEATS N8 PLAYERS_REMAINING N8 ACTIVE_PLAYERS N2 HAND_NUMBER N17 LEVEL N1 BUTTON_SEAT N1 PERSPECTIVE_SEAT N0 PERSPECTIVE_POS CO PERSPECTIVE_REL_BTN N7 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS CO REL_BTN N7 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D1 D9 D2 D5 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N1 POS BTN REL_BTN N0 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D3 D1 D4 D5 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N2 POS SB REL_BTN N1 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D5 D9 D7 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N3 POS BB REL_BTN N2 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D1 D5 D8 D5 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N4 POS UTG REL_BTN N3 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D1 D0 D3 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N5 POS UTG+1 REL_BTN N4 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D8 D7 D5 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N6 POS MP1 REL_BTN N5 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D0 D9 D8 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N7 POS MP2 REL_BTN N6 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D3 D9 D9 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS 55 HOLE CARD RANK 5 SUIT H END_CARD CARD RANK 5 SUIT D END_CARD END_HOLE BOARD_STREET FLOP BOARD_COUNT N3 BOARD CARD RANK T SUIT D END_CARD CARD RANK 9 SUIT H END_CARD CARD RANK K SUIT H END_CARD END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D5 D7 D2 </NUM> HIGHEST_WAGER_BB <NUM> D0 </NUM> ACTOR_WAGER_BB <NUM> D0 </NUM> TO_CALL_BB <NUM> D0 </NUM> MIN_BET_BB <NUM> D1 D0 D0 </NUM> MAX_BET_BB <NUM> D1 D9 D2 D5 </NUM> MIN_RAISE_TO_BB <NUM> D1 D0 D0 </NUM> MAX_RAISE_TO_BB <NUM> D1 D9 D2 D5 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N9 ACT ORDER N1 STREET PREFLOP SEAT N4 POS UTG ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N2 STREET PREFLOP SEAT N5 POS UTG+1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N3 STREET PREFLOP SEAT N6 POS MP1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N4 STREET PREFLOP SEAT N7 POS MP2 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N5 STREET PREFLOP SEAT N0 POS CO ACTION RAISE ALL_IN FALSE AMOUNT_BB NA TO_BB <NUM> D2 D3 D1 </NUM> END_ACT ACT ORDER N6 STREET PREFLOP SEAT N1 POS BTN ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N7 STREET PREFLOP SEAT N2 POS SB ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N8 STREET PREFLOP SEAT N3 POS BB ACTION CALL ALL_IN FALSE AMOUNT_BB <NUM> D1 D2 D1 </NUM> TO_BB NA END_ACT ACT ORDER N9 STREET FLOP SEAT N3 POS BB ACTION CHECK ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT <LEGAL> LEGAL FOLD TRUE LEGAL CHECK TRUE LEGAL CALL FALSE LEGAL BET TRUE LEGAL RAISE TRUE CALL_AMOUNT_BB <NUM> D0 </NUM> BET_OPTIONS_BB COUNT N4 <NUM> D1 D8 D9 </NUM> <NUM> D2 D8 D6 </NUM> <NUM> D4 D2 D9 </NUM> <NUM> D5 D7 D2 </NUM> RAISE_OPTIONS_BB COUNT N3 <NUM> D1 D0 D0 </NUM> <NUM> D1 D5 D0 </NUM> <NUM> D2 D0 D0 </NUM> <DECIDE> <TARGET> ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 </NUM> <EOS>The poker situation given to the model.
The point where the model must start producing an answer.
the stored teacher continuation for this held-out example; not used to train the selected checkpoint.
Turn Pokerese into tokens
Pokerese is deliberately built from small symbols. Each symbol becomes one token, and each token has a number in the model's vocabulary.
cards, position, stack, board, action context.
the structured language we created.
the individual Pokerese symbols.
the numeric vocabulary entries passed into the model.
<BOS> | <INPUT> | <CONTEXT> | VARIANT | NLHE | BETTING_STRUCTURE | NO_LIMIT | SESSION | LAST_TABLE | PLAY_MODE | PLAY | STREET | FLOP | TABLE_SEATS | N8 | PLAYERS_REMAINING | N8 | ACTIVE_PLAYERS | N2 | HAND_NUMBER | N17 | LEVEL | N1 | BUTTON_SEAT | N1 | PERSPECTIVE_SEAT | N0 | PERSPECTIVE_POS | CO | PERSPECTIVE_REL_BTN | N7 | <PLAYERS> | PLAYER_COUNT | N8 | PLAYER | SEAT | N0 | POS | CO | REL_BTN | N7 | STATUS | ACTIVE | PERSPECTIVE | TRUE | STACK_BB | <NUM> | D1 | D9 | D2 | D5 | </NUM> | WAGER_BB | <NUM> | D0 | </NUM> | END_PLAYER | PLAYER | SEAT | N1 | POS | BTN | REL_BTN | N0 | STATUS | FOLDED | PERSPECTIVE | FALSE | STACK_BB | <NUM> | D3 | D1 | D4 | D5 | </NUM> | WAGER_BB | <NUM> | D0 | </NUM> | END_PLAYER | PLAYER | SEAT | N2 | POS | SB | REL_BTN | N1 | STATUS | FOLDED | PERSPECTIVE | FALSE | STACK_BB | <NUM> | D5 | D9 | D7 | </NUM> | WAGER_BB | <NUM> | D0 | </NUM> | END_PLAYER | PLAYER | SEAT | N3 | POS | BB | REL_BTN | N2 | STATUS | ACTIVE | PERSPECTIVE | FALSE | STACK_BB | <NUM> | D1 | D5 | D8 | D5 | </NUM> | WAGER_BB | <NUM> | D0 | </NUM> | END_PLAYER | PLAYER | SEAT | N4 | POS | UTG | REL_BTN | N3 | STATUS | FOLDED | PERSPECTIVE | FALSE | STACK_BB | <NUM> | D2 | D1 | D0 | D3 | </NUM> | WAGER_BB | <NUM> | D0 | </NUM> | END_PLAYER | PLAYER | SEAT | N5 | POS | UTG+1 | REL_BTN | N4 | STATUS | FOLDED | PERSPECTIVE | FALSE | STACK_BB | <NUM> | D1 | D8 | D7 | D5 | </NUM> | WAGER_BB | <NUM> | D0 | </NUM> | END_PLAYER | PLAYER | SEAT | N6 | POS | MP1 | REL_BTN | N5 | STATUS | FOLDED | PERSPECTIVE | FALSE | STACK_BB | <NUM> | D1 | D0 | D9 | D8 | </NUM> | WAGER_BB | <NUM> | D0 | </NUM> | END_PLAYER | PLAYER | SEAT | N7 | POS | MP2 | REL_BTN | N6 | STATUS | FOLDED | PERSPECTIVE | FALSE | STACK_BB | <NUM> | D1 | D3 | D9 | D9 | </NUM> | WAGER_BB | <NUM> | D0 | </NUM> | END_PLAYER | <CARDS> | HOLE_COUNT | N2 | HAND_CLASS | 55 | HOLE | CARD | RANK | 5 | SUIT | H | END_CARD | CARD | RANK | 5 | SUIT | D | END_CARD | END_HOLE | BOARD_STREET | FLOP | BOARD_COUNT | N3 | BOARD | CARD | RANK | T | SUIT | D | END_CARD | CARD | RANK | 9 | SUIT | H | END_CARD | CARD | RANK | K | SUIT | H | END_CARD | END_BOARD | <BETTING> | SB_BB | <NUM> | D5 | D0 | </NUM> | BB_BB | <NUM> | D1 | D0 | D0 | </NUM> | ANTE_BB | <NUM> | D1 | D0 | </NUM> | POT_BB | <NUM> | D5 | D7 | D2 | </NUM> | HIGHEST_WAGER_BB | <NUM> | D0 | </NUM> | ACTOR_WAGER_BB | <NUM> | D0 | </NUM> | TO_CALL_BB | <NUM> | D0 | </NUM> | MIN_BET_BB | <NUM> | D1 | D0 | D0 | </NUM> | MAX_BET_BB | <NUM> | D1 | D9 | D2 | D5 | </NUM> | MIN_RAISE_TO_BB | <NUM> | D1 | D0 | D0 | </NUM> | MAX_RAISE_TO_BB | <NUM> | D1 | D9 | D2 | D5 | </NUM> | CALL_CLOSES_ACTION | UNK | <HISTORY> | ACTION_COUNT | N9 | ACT | ORDER | N1 | STREET | PREFLOP | SEAT | N4 | POS | UTG | ACTION | FOLD | ALL_IN | FALSE | AMOUNT_BB | NA | TO_BB | NA | END_ACT | ACT | ORDER | N2 | STREET | PREFLOP | SEAT | N5 | POS | UTG+1 | ACTION | FOLD | ALL_IN | FALSE | AMOUNT_BB | NA | TO_BB | NA | END_ACT | ACT | ORDER | N3 | STREET | PREFLOP | SEAT | N6 | POS | MP1 | ACTION | FOLD | ALL_IN | FALSE | AMOUNT_BB | NA | TO_BB | NA | END_ACT | ACT | ORDER | N4 | STREET | PREFLOP | SEAT | N7 | POS | MP2 | ACTION | FOLD | ALL_IN | FALSE | AMOUNT_BB | NA | TO_BB | NA | END_ACT | ACT | ORDER | N5 | STREET | PREFLOP | SEAT | N0 | POS | CO | ACTION | RAISE | ALL_IN | FALSE | AMOUNT_BB | NA | TO_BB | <NUM> | D2 | D3 | D1 | </NUM> | END_ACT | ACT | ORDER | N6 | STREET | PREFLOP | SEAT | N1 | POS | BTN | ACTION | FOLD | ALL_IN | FALSE | AMOUNT_BB | NA | TO_BB | NA | END_ACT | ACT | ORDER | N7 | STREET | PREFLOP | SEAT | N2 | POS | SB | ACTION | FOLD | ALL_IN | FALSE | AMOUNT_BB | NA | TO_BB | NA | END_ACT | ACT | ORDER | N8 | STREET | PREFLOP | SEAT | N3 | POS | BB | ACTION | CALL | ALL_IN | FALSE | AMOUNT_BB | <NUM> | D1 | D2 | D1 | </NUM> | TO_BB | NA | END_ACT | ACT | ORDER | N9 | STREET | FLOP | SEAT | N3 | POS | BB | ACTION | CHECK | ALL_IN | FALSE | AMOUNT_BB | NA | TO_BB | NA | END_ACT | <LEGAL> | LEGAL | FOLD | TRUE | LEGAL | CHECK | TRUE | LEGAL | CALL | FALSE | LEGAL | BET | TRUE | LEGAL | RAISE | TRUE | CALL_AMOUNT_BB | <NUM> | D0 | </NUM> | BET_OPTIONS_BB | COUNT | N4 | <NUM> | D1 | D8 | D9 | </NUM> | <NUM> | D2 | D8 | D6 | </NUM> | <NUM> | D4 | D2 | D9 | </NUM> | <NUM> | D5 | D7 | D2 | </NUM> | RAISE_OPTIONS_BB | COUNT | N3 | <NUM> | D1 | D0 | D0 | </NUM> | <NUM> | D1 | D5 | D0 | </NUM> | <NUM> | D2 | D0 | D0 | </NUM> | <DECIDE> | <TARGET> | ACTION | BET | SIZE_KIND | AMOUNT | SIZE_BB | <NUM> | D1 | D8 | D9 | </NUM> | <EOS>2 | 4 | 82 | 1607 | 1525 | 126 | 1527 | 1572 | 214 | 1537 | 1533 | 1577 | 159 | 1596 | 1301 | 1535 | 1301 | 109 | 635 | 164 | 602 | 216 | 224 | 133 | 224 | 1532 | 223 | 1530 | 140 | 1531 | 1190 | 86 | 1536 | 1301 | 1534 | 1571 | 223 | 1538 | 140 | 1566 | 1190 | 1576 | 108 | 1529 | 1600 | 1575 | 85 | 144 | 152 | 145 | 148 | 79 | 1608 | 85 | 143 | 79 | 157 | 1534 | 1571 | 224 | 1538 | 131 | 1566 | 223 | 1576 | 161 | 1529 | 158 | 1575 | 85 | 146 | 144 | 147 | 148 | 79 | 1608 | 85 | 143 | 79 | 157 | 1534 | 1571 | 635 | 1538 | 1569 | 1566 | 224 | 1576 | 161 | 1529 | 158 | 1575 | 85 | 148 | 152 | 150 | 79 | 1608 | 85 | 143 | 79 | 157 | 1534 | 1571 | 746 | 1538 | 123 | 1566 | 635 | 1576 | 108 | 1529 | 158 | 1575 | 85 | 144 | 148 | 151 | 148 | 79 | 1608 | 85 | 143 | 79 | 157 | 1534 | 1571 | 857 | 1538 | 1604 | 1566 | 746 | 1576 | 161 | 1529 | 158 | 1575 | 85 | 145 | 144 | 143 | 146 | 79 | 1608 | 85 | 143 | 79 | 157 | 1534 | 1571 | 968 | 1538 | 1605 | 1566 | 857 | 1576 | 161 | 1529 | 158 | 1575 | 85 | 144 | 151 | 150 | 148 | 79 | 1608 | 85 | 143 | 79 | 157 | 1534 | 1571 | 1079 | 1538 | 221 | 1566 | 968 | 1576 | 161 | 1529 | 158 | 1575 | 85 | 144 | 143 | 152 | 151 | 79 | 1608 | 85 | 143 | 79 | 157 | 1534 | 1571 | 1190 | 1538 | 222 | 1566 | 1079 | 1576 | 161 | 1529 | 158 | 1575 | 85 | 144 | 146 | 152 | 152 | 79 | 1608 | 85 | 143 | 79 | 157 | 81 | 168 | 635 | 163 | 26 | 167 | 138 | 1565 | 19 | 1578 | 162 | 155 | 138 | 1565 | 19 | 1578 | 142 | 155 | 156 | 130 | 159 | 129 | 746 | 128 | 138 | 1565 | 1579 | 1578 | 142 | 155 | 138 | 1565 | 63 | 1578 | 162 | 155 | 138 | 1565 | 190 | 1578 | 162 | 155 | 154 | 80 | 1570 | 85 | 148 | 143 | 79 | 124 | 85 | 144 | 143 | 143 | 79 | 118 | 85 | 144 | 143 | 79 | 1539 | 85 | 148 | 150 | 145 | 79 | 165 | 85 | 143 | 79 | 110 | 85 | 143 | 79 | 1599 | 85 | 143 | 79 | 219 | 85 | 144 | 143 | 143 | 79 | 217 | 85 | 144 | 152 | 145 | 148 | 79 | 220 | 85 | 144 | 143 | 143 | 79 | 218 | 85 | 144 | 152 | 145 | 148 | 79 | 137 | 1603 | 83 | 107 | 1412 | 105 | 1528 | 224 | 1577 | 1540 | 1571 | 857 | 1538 | 1604 | 106 | 160 | 115 | 158 | 117 | 1523 | 1598 | 1523 | 153 | 105 | 1528 | 635 | 1577 | 1540 | 1571 | 968 | 1538 | 1605 | 106 | 160 | 115 | 158 | 117 | 1523 | 1598 | 1523 | 153 | 105 | 1528 | 746 | 1577 | 1540 | 1571 | 1079 | 1538 | 221 | 106 | 160 | 115 | 158 | 117 | 1523 | 1598 | 1523 | 153 | 105 | 1528 | 857 | 1577 | 1540 | 1571 | 1190 | 1538 | 222 | 106 | 160 | 115 | 158 | 117 | 1523 | 1598 | 1523 | 153 | 105 | 1528 | 968 | 1577 | 1540 | 1571 | 223 | 1538 | 140 | 106 | 1563 | 115 | 158 | 117 | 1523 | 1598 | 85 | 145 | 146 | 144 | 79 | 153 | 105 | 1528 | 1079 | 1577 | 1540 | 1571 | 224 | 1538 | 131 | 106 | 160 | 115 | 158 | 117 | 1523 | 1598 | 1523 | 153 | 105 | 1528 | 1190 | 1577 | 1540 | 1571 | 635 | 1538 | 1569 | 106 | 160 | 115 | 158 | 117 | 1523 | 1598 | 1523 | 153 | 105 | 1528 | 1301 | 1577 | 1540 | 1571 | 746 | 1538 | 123 | 106 | 135 | 115 | 158 | 117 | 85 | 144 | 145 | 144 | 79 | 1598 | 1523 | 153 | 105 | 1528 | 1412 | 1577 | 159 | 1571 | 746 | 1538 | 123 | 106 | 139 | 115 | 158 | 117 | 1523 | 1598 | 1523 | 153 | 84 | 215 | 160 | 1600 | 215 | 139 | 1600 | 215 | 135 | 158 | 215 | 125 | 1600 | 215 | 1563 | 1600 | 136 | 85 | 143 | 79 | 127 | 141 | 857 | 85 | 144 | 151 | 152 | 79 | 85 | 145 | 151 | 149 | 79 | 85 | 147 | 145 | 152 | 79 | 85 | 148 | 150 | 145 | 79 | 1564 | 141 | 746 | 85 | 144 | 143 | 143 | 79 | 85 | 144 | 148 | 143 | 79 | 85 | 145 | 143 | 143 | 79 | 5 | 6 | 106 | 125 | 1574 | 116 | 1573 | 85 | 144 | 151 | 152 | 79 | 3Turn a token ID into coordinates
Token ID 125 is only a label. The model cannot infer meaning from the number 125 itself.
Instead, Pokerese gives each token a vector of 32 numbers. Think of those numbers as coordinates. In ordinary space we use x, y and z. Here there are 32 dimensions instead.
The dimensions do not have names like "position" or "aggression". They are simply directions the model can use to represent the token.
[-0.3576, -0.2687, -0.1866, 0.1018, 0.7383, -1.1938, -0.9584, -0.1491, 1.4157, -0.0103, 0.2909, 0.0747, -0.1644, -0.9572, 0.2177, -0.0509, 0.7715, 0.4062, 0.1258, 0.1434, 0.0824, 0.1597, 0.0438, 1.1746, 0.3527, 0.0965, 0.3358, -0.4032, 1.4009, 0.7081, -0.3188, -0.6555][x, y, z] = [0.12, -0.44, 0.08][d1, d2, d3, ... d32]You can't draw 32 dimensions, but mathematically it works like coordinates.
Later, training will change these coordinates. For now, the important point is that a token has become a 32-number representation the network can process.
Add where each token appears
Token embeddings tell the model what a token is. Positional information tells the model where that token appears in the Pokerese sequence.
The words are the same. Their positions change the meaning.
| English | Pokerese | Token ID | Embedding | Position | Combined representation |
|---|---|---|---|---|---|
| street marker | STREET | 1577 | [0.2187, 0.2316, -0.3041, -0.0644, ... x32]Token embedding d1 0.2187 d2 0.2316 d3 -0.3041 d4 -0.0644 d5 -0.2264 d6 -0.2867 d7 -0.0472 d8 -0.1718 d9 0.1510 d10 -0.4366 d11 0.2728 d12 0.0433 d13 -0.0963 d14 -0.0479 d15 0.0745 d16 -0.1674 d17 -0.0130 d18 0.2471 d19 0.0783 d20 0.1026 d21 -0.0817 d22 -0.1307 d23 0.0241 d24 0.1488 d25 -0.0506 d26 0.1688 d27 0.0601 d28 0.1048 d29 0.1636 d30 0.1989 d31 0.1243 d32 -0.1464 [0.2187, 0.2316, -0.3041, -0.0644, -0.2264, -0.2867, -0.0472, -0.1718, 0.1510, -0.4366, 0.2728, 0.0433, -0.0963, -0.0479, 0.0745, -0.1674, -0.0130, 0.2471, 0.0783, 0.1026, -0.0817, -0.1307, 0.0241, 0.1488, -0.0506, 0.1688, 0.0601, 0.1048, 0.1636, 0.1989, 0.1243, -0.1464] | 12 internal 11 [0.0742, 0.0321, -0.0958, -0.0590, ... x32]Position embedding d1 0.0742 d2 0.0321 d3 -0.0958 d4 -0.0590 d5 -0.0373 d6 -0.0648 d7 0.0563 d8 -0.0302 d9 0.0229 d10 -0.0255 d11 0.0400 d12 0.0186 d13 -0.0918 d14 0.0048 d15 0.0843 d16 -0.0519 d17 -0.0051 d18 0.0514 d19 0.0071 d20 -0.0487 d21 -0.0846 d22 -0.0226 d23 -0.0186 d24 -0.0098 d25 -0.0169 d26 0.0233 d27 0.0445 d28 -0.0010 d29 0.0641 d30 0.1778 d31 0.0997 d32 -0.0380 [0.0742, 0.0321, -0.0958, -0.0590, -0.0373, -0.0648, 0.0563, -0.0302, 0.0229, -0.0255, 0.0400, 0.0186, -0.0918, 0.0048, 0.0843, -0.0519, -0.0051, 0.0514, 0.0071, -0.0487, -0.0846, -0.0226, -0.0186, -0.0098, -0.0169, 0.0233, 0.0445, -0.0010, 0.0641, 0.1778, 0.0997, -0.0380] | token vector + position vector [0.2929, 0.2637, -0.3999, -0.1234, ... x32]Combined representation d1 0.2929 d2 0.2637 d3 -0.3999 d4 -0.1234 d5 -0.2637 d6 -0.3515 d7 0.0091 d8 -0.2020 d9 0.1739 d10 -0.4621 d11 0.3128 d12 0.0619 d13 -0.1882 d14 -0.0431 d15 0.1588 d16 -0.2194 d17 -0.0181 d18 0.2984 d19 0.0854 d20 0.0539 d21 -0.1663 d22 -0.1533 d23 0.0055 d24 0.1390 d25 -0.0674 d26 0.1922 d27 0.1047 d28 0.1038 d29 0.2277 d30 0.3768 d31 0.2240 d32 -0.1843 [0.2929, 0.2637, -0.3999, -0.1234, -0.2637, -0.3515, 0.0091, -0.2020, 0.1739, -0.4621, 0.3128, 0.0619, -0.1882, -0.0431, 0.1588, -0.2194, -0.0181, 0.2984, 0.0854, 0.0539, -0.1663, -0.1533, 0.0055, 0.1390, -0.0674, 0.1922, 0.1047, 0.1038, 0.2277, 0.3768, 0.2240, -0.1843] |
| street | FLOP | 159 | [-0.4626, -0.2450, 0.0012, 0.7575, ... x32]Token embedding d1 -0.4626 d2 -0.2450 d3 0.0012 d4 0.7575 d5 -0.2057 d6 0.0219 d7 -0.1567 d8 0.2620 d9 0.2599 d10 0.4527 d11 0.2267 d12 0.1319 d13 0.1324 d14 1.0763 d15 -0.5518 d16 0.2893 d17 0.3120 d18 -0.5215 d19 -0.3822 d20 0.1257 d21 0.2803 d22 0.1003 d23 -0.1182 d24 0.1380 d25 0.0075 d26 0.1177 d27 0.1736 d28 0.2000 d29 -0.0657 d30 -0.2388 d31 -0.5074 d32 0.1503 [-0.4626, -0.2450, 0.0012, 0.7575, -0.2057, 0.0219, -0.1567, 0.2620, 0.2599, 0.4527, 0.2267, 0.1319, 0.1324, 1.0763, -0.5518, 0.2893, 0.3120, -0.5215, -0.3822, 0.1257, 0.2803, 0.1003, -0.1182, 0.1380, 0.0075, 0.1177, 0.1736, 0.2000, -0.0657, -0.2388, -0.5074, 0.1503] | 13 internal 12 [0.0122, 0.0474, -0.0041, 0.1762, ... x32]Position embedding d1 0.0122 d2 0.0474 d3 -0.0041 d4 0.1762 d5 -0.0006 d6 0.1499 d7 -0.3916 d8 0.1560 d9 -0.2383 d10 -0.1096 d11 0.1092 d12 0.1154 d13 0.0842 d14 0.6461 d15 -0.1657 d16 -0.0228 d17 0.1776 d18 -0.0257 d19 -0.1134 d20 -0.2175 d21 -0.1662 d22 -0.0013 d23 0.0569 d24 0.1178 d25 0.1440 d26 0.0433 d27 0.1783 d28 0.0394 d29 -0.0572 d30 -0.2951 d31 -0.1006 d32 0.0618 [0.0122, 0.0474, -0.0041, 0.1762, -0.0006, 0.1499, -0.3916, 0.1560, -0.2383, -0.1096, 0.1092, 0.1154, 0.0842, 0.6461, -0.1657, -0.0228, 0.1776, -0.0257, -0.1134, -0.2175, -0.1662, -0.0013, 0.0569, 0.1178, 0.1440, 0.0433, 0.1783, 0.0394, -0.0572, -0.2951, -0.1006, 0.0618] | token vector + position vector [-0.4504, -0.1976, -0.0029, 0.9337, ... x32]Combined representation d1 -0.4504 d2 -0.1976 d3 -0.0029 d4 0.9337 d5 -0.2062 d6 0.1718 d7 -0.5484 d8 0.4180 d9 0.0216 d10 0.3431 d11 0.3359 d12 0.2473 d13 0.2165 d14 1.7224 d15 -0.7174 d16 0.2665 d17 0.4896 d18 -0.5472 d19 -0.4956 d20 -0.0918 d21 0.1141 d22 0.0990 d23 -0.0613 d24 0.2558 d25 0.1514 d26 0.1610 d27 0.3519 d28 0.2394 d29 -0.1229 d30 -0.5339 d31 -0.6080 d32 0.2121 [-0.4504, -0.1976, -0.0029, 0.9337, -0.2062, 0.1718, -0.5484, 0.4180, 0.0216, 0.3431, 0.3359, 0.2473, 0.2165, 1.7224, -0.7174, 0.2665, 0.4896, -0.5472, -0.4956, -0.0918, 0.1141, 0.0990, -0.0613, 0.2558, 0.1514, 0.1610, 0.3519, 0.2394, -0.1229, -0.5339, -0.6080, 0.2121] |
| hero position marker | PERSPECTIVE_POS | 1530 | [0.0638, 0.0062, 0.0617, 0.0187, ... x32]Token embedding d1 0.0638 d2 0.0062 d3 0.0617 d4 0.0187 d5 0.2562 d6 -0.1031 d7 0.0901 d8 0.1458 d9 -0.0921 d10 -0.2229 d11 -0.0233 d12 -0.0657 d13 -0.0077 d14 -0.0388 d15 0.1599 d16 -0.1087 d17 0.0635 d18 0.0821 d19 -0.0478 d20 -0.1197 d21 -0.0283 d22 -0.0381 d23 -0.0319 d24 0.0260 d25 -0.0219 d26 -0.1453 d27 -0.0527 d28 0.1466 d29 -0.0240 d30 0.1568 d31 -0.0052 d32 -0.2065 [0.0638, 0.0062, 0.0617, 0.0187, 0.2562, -0.1031, 0.0901, 0.1458, -0.0921, -0.2229, -0.0233, -0.0657, -0.0077, -0.0388, 0.1599, -0.1087, 0.0635, 0.0821, -0.0478, -0.1197, -0.0283, -0.0381, -0.0319, 0.0260, -0.0219, -0.1453, -0.0527, 0.1466, -0.0240, 0.1568, -0.0052, -0.2065] | 28 internal 27 [0.0653, 0.0026, 0.0606, 0.0190, ... x32]Position embedding d1 0.0653 d2 0.0026 d3 0.0606 d4 0.0190 d5 0.2567 d6 -0.1043 d7 0.0882 d8 0.1455 d9 -0.0925 d10 -0.2238 d11 -0.0231 d12 -0.0668 d13 -0.0060 d14 -0.0417 d15 0.1609 d16 -0.1065 d17 0.0641 d18 0.0794 d19 -0.0470 d20 -0.1201 d21 -0.0294 d22 -0.0384 d23 -0.0323 d24 0.0267 d25 -0.0222 d26 -0.1464 d27 -0.0513 d28 0.1483 d29 -0.0231 d30 0.1619 d31 0.0017 d32 -0.2089 [0.0653, 0.0026, 0.0606, 0.0190, 0.2567, -0.1043, 0.0882, 0.1455, -0.0925, -0.2238, -0.0231, -0.0668, -0.0060, -0.0417, 0.1609, -0.1065, 0.0641, 0.0794, -0.0470, -0.1201, -0.0294, -0.0384, -0.0323, 0.0267, -0.0222, -0.1464, -0.0513, 0.1483, -0.0231, 0.1619, 0.0017, -0.2089] | token vector + position vector [0.1291, 0.0088, 0.1223, 0.0377, ... x32]Combined representation d1 0.1291 d2 0.0088 d3 0.1223 d4 0.0377 d5 0.5129 d6 -0.2074 d7 0.1782 d8 0.2913 d9 -0.1846 d10 -0.4467 d11 -0.0464 d12 -0.1324 d13 -0.0137 d14 -0.0805 d15 0.3209 d16 -0.2152 d17 0.1276 d18 0.1614 d19 -0.0948 d20 -0.2398 d21 -0.0577 d22 -0.0765 d23 -0.0642 d24 0.0528 d25 -0.0441 d26 -0.2917 d27 -0.1041 d28 0.2949 d29 -0.0471 d30 0.3187 d31 -0.0035 d32 -0.4154 [0.1291, 0.0088, 0.1223, 0.0377, 0.5129, -0.2074, 0.1782, 0.2913, -0.1846, -0.4467, -0.0464, -0.1324, -0.0137, -0.0805, 0.3209, -0.2152, 0.1276, 0.1614, -0.0948, -0.2398, -0.0577, -0.0765, -0.0642, 0.0528, -0.0441, -0.2917, -0.1041, 0.2949, -0.0471, 0.3187, -0.0035, -0.4154] |
| hero position | CO | 140 | [-0.2859, 0.0707, -0.1164, -0.2024, ... x32]Token embedding d1 -0.2859 d2 0.0707 d3 -0.1164 d4 -0.2024 d5 0.5042 d6 -0.0191 d7 -0.0316 d8 0.2157 d9 0.2997 d10 0.2460 d11 -0.1410 d12 -0.2096 d13 -0.2270 d14 -0.1901 d15 0.4029 d16 0.0385 d17 -0.3506 d18 0.0680 d19 -0.0993 d20 0.0742 d21 -0.1421 d22 -0.1190 d23 -0.0652 d24 0.0282 d25 -0.2152 d26 0.0309 d27 0.2057 d28 0.1797 d29 0.0733 d30 -0.1069 d31 -0.0744 d32 -0.0590 [-0.2859, 0.0707, -0.1164, -0.2024, 0.5042, -0.0191, -0.0316, 0.2157, 0.2997, 0.2460, -0.1410, -0.2096, -0.2270, -0.1901, 0.4029, 0.0385, -0.3506, 0.0680, -0.0993, 0.0742, -0.1421, -0.1190, -0.0652, 0.0282, -0.2152, 0.0309, 0.2057, 0.1797, 0.0733, -0.1069, -0.0744, -0.0590] | 29 internal 28 [0.0670, 0.1206, 0.1691, -0.1376, ... x32]Position embedding d1 0.0670 d2 0.1206 d3 0.1691 d4 -0.1376 d5 0.3063 d6 -0.0880 d7 -0.5837 d8 -0.2800 d9 -0.0429 d10 0.3523 d11 -0.0609 d12 0.0122 d13 -0.2480 d14 -0.1577 d15 0.6261 d16 0.2547 d17 -0.1147 d18 -0.5553 d19 0.1320 d20 -0.0230 d21 0.2447 d22 -0.0592 d23 0.1122 d24 0.3441 d25 0.0995 d26 0.1845 d27 0.2506 d28 -1.0176 d29 0.1428 d30 0.0876 d31 -0.0477 d32 0.1996 [0.0670, 0.1206, 0.1691, -0.1376, 0.3063, -0.0880, -0.5837, -0.2800, -0.0429, 0.3523, -0.0609, 0.0122, -0.2480, -0.1577, 0.6261, 0.2547, -0.1147, -0.5553, 0.1320, -0.0230, 0.2447, -0.0592, 0.1122, 0.3441, 0.0995, 0.1845, 0.2506, -1.0176, 0.1428, 0.0876, -0.0477, 0.1996] | token vector + position vector [-0.2189, 0.1913, 0.0527, -0.3400, ... x32]Combined representation d1 -0.2189 d2 0.1913 d3 0.0527 d4 -0.3400 d5 0.8105 d6 -0.1071 d7 -0.6153 d8 -0.0643 d9 0.2568 d10 0.5983 d11 -0.2018 d12 -0.1973 d13 -0.4749 d14 -0.3478 d15 1.0290 d16 0.2932 d17 -0.4653 d18 -0.4874 d19 0.0327 d20 0.0512 d21 0.1025 d22 -0.1782 d23 0.0471 d24 0.3723 d25 -0.1157 d26 0.2154 d27 0.4563 d28 -0.8379 d29 0.2161 d30 -0.0192 d31 -0.1221 d32 0.1407 [-0.2189, 0.1913, 0.0527, -0.3400, 0.8105, -0.1071, -0.6153, -0.0643, 0.2568, 0.5983, -0.2018, -0.1973, -0.4749, -0.3478, 1.0290, 0.2932, -0.4653, -0.4874, 0.0327, 0.0512, 0.1025, -0.1782, 0.0471, 0.3723, -0.1157, 0.2154, 0.4563, -0.8379, 0.2161, -0.0192, -0.1221, 0.1407] |
| hero hole card 1 rank | 5 | 19 | [0.0824, 0.1162, 0.0577, -0.1784, ... x32]Token embedding d1 0.0824 d2 0.1162 d3 0.0577 d4 -0.1784 d5 -0.1155 d6 0.0781 d7 -0.0368 d8 -0.0981 d9 -0.0586 d10 -0.1953 d11 0.0784 d12 0.1179 d13 0.0611 d14 -0.2152 d15 0.0115 d16 0.1111 d17 0.1047 d18 0.1618 d19 0.1034 d20 -0.0230 d21 -0.1413 d22 -0.0594 d23 0.1032 d24 0.0859 d25 0.1302 d26 -0.0890 d27 -0.0981 d28 -0.1092 d29 0.1070 d30 0.0600 d31 0.1012 d32 0.0621 [0.0824, 0.1162, 0.0577, -0.1784, -0.1155, 0.0781, -0.0368, -0.0981, -0.0586, -0.1953, 0.0784, 0.1179, 0.0611, -0.2152, 0.0115, 0.1111, 0.1047, 0.1618, 0.1034, -0.0230, -0.1413, -0.0594, 0.1032, 0.0859, 0.1302, -0.0890, -0.0981, -0.1092, 0.1070, 0.0600, 0.1012, 0.0621] | 226 internal 225 [-0.3322, 0.0287, 0.0771, -0.0169, ... x32]Position embedding d1 -0.3322 d2 0.0287 d3 0.0771 d4 -0.0169 d5 0.0613 d6 -0.0689 d7 -0.1529 d8 -0.1259 d9 0.0441 d10 0.0422 d11 0.0155 d12 0.1275 d13 -0.0839 d14 0.2245 d15 0.2171 d16 -0.0641 d17 -0.0227 d18 0.0420 d19 -0.0260 d20 0.2052 d21 0.1567 d22 0.0597 d23 -0.1432 d24 -0.0554 d25 -0.1031 d26 -0.0067 d27 -0.1485 d28 0.1466 d29 0.2013 d30 0.1750 d31 -0.0944 d32 -0.1068 [-0.3322, 0.0287, 0.0771, -0.0169, 0.0613, -0.0689, -0.1529, -0.1259, 0.0441, 0.0422, 0.0155, 0.1275, -0.0839, 0.2245, 0.2171, -0.0641, -0.0227, 0.0420, -0.0260, 0.2052, 0.1567, 0.0597, -0.1432, -0.0554, -0.1031, -0.0067, -0.1485, 0.1466, 0.2013, 0.1750, -0.0944, -0.1068] | token vector + position vector [-0.2498, 0.1449, 0.1347, -0.1953, ... x32]Combined representation d1 -0.2498 d2 0.1449 d3 0.1347 d4 -0.1953 d5 -0.0542 d6 0.0092 d7 -0.1897 d8 -0.2240 d9 -0.0145 d10 -0.1531 d11 0.0939 d12 0.2454 d13 -0.0228 d14 0.0093 d15 0.2286 d16 0.0470 d17 0.0820 d18 0.2038 d19 0.0774 d20 0.1822 d21 0.0154 d22 0.0003 d23 -0.0400 d24 0.0305 d25 0.0271 d26 -0.0957 d27 -0.2466 d28 0.0374 d29 0.3083 d30 0.2350 d31 0.0068 d32 -0.0448 [-0.2498, 0.1449, 0.1347, -0.1953, -0.0542, 0.0092, -0.1897, -0.2240, -0.0145, -0.1531, 0.0939, 0.2454, -0.0228, 0.0093, 0.2286, 0.0470, 0.0820, 0.2038, 0.0774, 0.1822, 0.0154, 0.0003, -0.0400, 0.0305, 0.0271, -0.0957, -0.2466, 0.0374, 0.3083, 0.2350, 0.0068, -0.0448] |
| hero hole card 1 suit | H | 162 | [-0.0940, 0.0832, -0.0673, -0.0744, ... x32]Token embedding d1 -0.0940 d2 0.0832 d3 -0.0673 d4 -0.0744 d5 -0.0172 d6 0.0903 d7 -0.1496 d8 0.0116 d9 0.0311 d10 -0.0080 d11 -0.0188 d12 0.0509 d13 -0.2085 d14 -0.0591 d15 0.2437 d16 0.0356 d17 0.1987 d18 -0.0694 d19 0.0829 d20 -0.0357 d21 -0.1602 d22 -0.0090 d23 0.0339 d24 0.0353 d25 0.0912 d26 0.0637 d27 0.0060 d28 -0.1396 d29 0.0522 d30 0.0266 d31 0.1676 d32 -0.0317 [-0.0940, 0.0832, -0.0673, -0.0744, -0.0172, 0.0903, -0.1496, 0.0116, 0.0311, -0.0080, -0.0188, 0.0509, -0.2085, -0.0591, 0.2437, 0.0356, 0.1987, -0.0694, 0.0829, -0.0357, -0.1602, -0.0090, 0.0339, 0.0353, 0.0912, 0.0637, 0.0060, -0.1396, 0.0522, 0.0266, 0.1676, -0.0317] | 228 internal 227 [-0.1515, -0.0063, -0.0435, -0.0381, ... x32]Position embedding d1 -0.1515 d2 -0.0063 d3 -0.0435 d4 -0.0381 d5 0.0355 d6 -0.1104 d7 -0.1156 d8 -0.1190 d9 0.0511 d10 -0.1773 d11 0.1192 d12 0.0116 d13 -0.2247 d14 -0.0338 d15 -0.0877 d16 0.0650 d17 0.0934 d18 0.0414 d19 -0.0072 d20 0.2328 d21 0.1509 d22 0.0650 d23 -0.0933 d24 0.0029 d25 -0.0211 d26 -0.0509 d27 -0.3086 d28 0.0470 d29 -0.0547 d30 0.1566 d31 0.0738 d32 -0.0066 [-0.1515, -0.0063, -0.0435, -0.0381, 0.0355, -0.1104, -0.1156, -0.1190, 0.0511, -0.1773, 0.1192, 0.0116, -0.2247, -0.0338, -0.0877, 0.0650, 0.0934, 0.0414, -0.0072, 0.2328, 0.1509, 0.0650, -0.0933, 0.0029, -0.0211, -0.0509, -0.3086, 0.0470, -0.0547, 0.1566, 0.0738, -0.0066] | token vector + position vector [-0.2455, 0.0769, -0.1108, -0.1124, ... x32]Combined representation d1 -0.2455 d2 0.0769 d3 -0.1108 d4 -0.1124 d5 0.0183 d6 -0.0201 d7 -0.2653 d8 -0.1074 d9 0.0822 d10 -0.1853 d11 0.1004 d12 0.0625 d13 -0.4332 d14 -0.0929 d15 0.1560 d16 0.1005 d17 0.2921 d18 -0.0280 d19 0.0757 d20 0.1971 d21 -0.0092 d22 0.0560 d23 -0.0593 d24 0.0382 d25 0.0701 d26 0.0129 d27 -0.3026 d28 -0.0926 d29 -0.0026 d30 0.1832 d31 0.2414 d32 -0.0384 [-0.2455, 0.0769, -0.1108, -0.1124, 0.0183, -0.0201, -0.2653, -0.1074, 0.0822, -0.1853, 0.1004, 0.0625, -0.4332, -0.0929, 0.1560, 0.1005, 0.2921, -0.0280, 0.0757, 0.1971, -0.0092, 0.0560, -0.0593, 0.0382, 0.0701, 0.0129, -0.3026, -0.0926, -0.0026, 0.1832, 0.2414, -0.0384] |
| hero hole card 2 rank | 5 | 19 | [0.0824, 0.1162, 0.0577, -0.1784, ... x32]Token embedding d1 0.0824 d2 0.1162 d3 0.0577 d4 -0.1784 d5 -0.1155 d6 0.0781 d7 -0.0368 d8 -0.0981 d9 -0.0586 d10 -0.1953 d11 0.0784 d12 0.1179 d13 0.0611 d14 -0.2152 d15 0.0115 d16 0.1111 d17 0.1047 d18 0.1618 d19 0.1034 d20 -0.0230 d21 -0.1413 d22 -0.0594 d23 0.1032 d24 0.0859 d25 0.1302 d26 -0.0890 d27 -0.0981 d28 -0.1092 d29 0.1070 d30 0.0600 d31 0.1012 d32 0.0621 [0.0824, 0.1162, 0.0577, -0.1784, -0.1155, 0.0781, -0.0368, -0.0981, -0.0586, -0.1953, 0.0784, 0.1179, 0.0611, -0.2152, 0.0115, 0.1111, 0.1047, 0.1618, 0.1034, -0.0230, -0.1413, -0.0594, 0.1032, 0.0859, 0.1302, -0.0890, -0.0981, -0.1092, 0.1070, 0.0600, 0.1012, 0.0621] | 232 internal 231 [-0.0221, -0.0158, -0.0151, 0.0311, ... x32]Position embedding d1 -0.0221 d2 -0.0158 d3 -0.0151 d4 0.0311 d5 -0.0549 d6 -0.0687 d7 -0.0652 d8 -0.1931 d9 0.0150 d10 0.0155 d11 -0.0006 d12 0.1041 d13 -0.0324 d14 0.1856 d15 0.2739 d16 -0.0105 d17 -0.1333 d18 0.0332 d19 0.0096 d20 0.2840 d21 0.1942 d22 0.1138 d23 -0.0805 d24 0.0134 d25 0.0387 d26 0.0476 d27 -0.3430 d28 0.0858 d29 0.0484 d30 0.0412 d31 -0.1051 d32 -0.0185 [-0.0221, -0.0158, -0.0151, 0.0311, -0.0549, -0.0687, -0.0652, -0.1931, 0.0150, 0.0155, -0.0006, 0.1041, -0.0324, 0.1856, 0.2739, -0.0105, -0.1333, 0.0332, 0.0096, 0.2840, 0.1942, 0.1138, -0.0805, 0.0134, 0.0387, 0.0476, -0.3430, 0.0858, 0.0484, 0.0412, -0.1051, -0.0185] | token vector + position vector [0.0604, 0.1004, 0.0425, -0.1473, ... x32]Combined representation d1 0.0604 d2 0.1004 d3 0.0425 d4 -0.1473 d5 -0.1703 d6 0.0094 d7 -0.1019 d8 -0.2912 d9 -0.0436 d10 -0.1798 d11 0.0778 d12 0.2219 d13 0.0286 d14 -0.0296 d15 0.2854 d16 0.1005 d17 -0.0286 d18 0.1950 d19 0.1129 d20 0.2610 d21 0.0529 d22 0.0544 d23 0.0227 d24 0.0993 d25 0.1689 d26 -0.0414 d27 -0.4411 d28 -0.0234 d29 0.1554 d30 0.1012 d31 -0.0039 d32 0.0435 [0.0604, 0.1004, 0.0425, -0.1473, -0.1703, 0.0094, -0.1019, -0.2912, -0.0436, -0.1798, 0.0778, 0.2219, 0.0286, -0.0296, 0.2854, 0.1005, -0.0286, 0.1950, 0.1129, 0.2610, 0.0529, 0.0544, 0.0227, 0.0993, 0.1689, -0.0414, -0.4411, -0.0234, 0.1554, 0.1012, -0.0039, 0.0435] |
| hero hole card 2 suit | D | 142 | [0.0363, 0.0501, -0.1235, 0.0577, ... x32]Token embedding d1 0.0363 d2 0.0501 d3 -0.1235 d4 0.0577 d5 0.1993 d6 0.0659 d7 0.0192 d8 -0.0011 d9 0.0907 d10 0.1392 d11 0.1038 d12 -0.1277 d13 -0.1097 d14 -0.1531 d15 0.0481 d16 -0.0957 d17 -0.1667 d18 0.0424 d19 -0.0609 d20 0.0211 d21 -0.1189 d22 0.0913 d23 -0.0612 d24 -0.0516 d25 0.0493 d26 0.1467 d27 0.0326 d28 0.0102 d29 -0.1265 d30 -0.0140 d31 0.1297 d32 0.0749 [0.0363, 0.0501, -0.1235, 0.0577, 0.1993, 0.0659, 0.0192, -0.0011, 0.0907, 0.1392, 0.1038, -0.1277, -0.1097, -0.1531, 0.0481, -0.0957, -0.1667, 0.0424, -0.0609, 0.0211, -0.1189, 0.0913, -0.0612, -0.0516, 0.0493, 0.1467, 0.0326, 0.0102, -0.1265, -0.0140, 0.1297, 0.0749] | 234 internal 233 [-0.1139, -0.0062, -0.0781, -0.1204, ... x32]Position embedding d1 -0.1139 d2 -0.0062 d3 -0.0781 d4 -0.1204 d5 -0.2475 d6 -0.0603 d7 -0.0062 d8 -0.0149 d9 -0.0415 d10 -0.0127 d11 -0.0141 d12 0.1090 d13 -0.4001 d14 0.2744 d15 0.1952 d16 0.0744 d17 0.2548 d18 -0.0514 d19 0.1747 d20 -0.0760 d21 -0.0521 d22 0.1436 d23 0.0749 d24 -0.1158 d25 0.0593 d26 0.1482 d27 0.0125 d28 0.0124 d29 0.0234 d30 0.2857 d31 -0.0599 d32 -0.0589 [-0.1139, -0.0062, -0.0781, -0.1204, -0.2475, -0.0603, -0.0062, -0.0149, -0.0415, -0.0127, -0.0141, 0.1090, -0.4001, 0.2744, 0.1952, 0.0744, 0.2548, -0.0514, 0.1747, -0.0760, -0.0521, 0.1436, 0.0749, -0.1158, 0.0593, 0.1482, 0.0125, 0.0124, 0.0234, 0.2857, -0.0599, -0.0589] | token vector + position vector [-0.0777, 0.0439, -0.2016, -0.0627, ... x32]Combined representation d1 -0.0777 d2 0.0439 d3 -0.2016 d4 -0.0627 d5 -0.0482 d6 0.0056 d7 0.0131 d8 -0.0160 d9 0.0492 d10 0.1266 d11 0.0897 d12 -0.0187 d13 -0.5097 d14 0.1213 d15 0.2433 d16 -0.0213 d17 0.0881 d18 -0.0090 d19 0.1138 d20 -0.0549 d21 -0.1710 d22 0.2349 d23 0.0137 d24 -0.1674 d25 0.1086 d26 0.2948 d27 0.0451 d28 0.0225 d29 -0.1031 d30 0.2718 d31 0.0698 d32 0.0161 [-0.0777, 0.0439, -0.2016, -0.0627, -0.0482, 0.0056, 0.0131, -0.0160, 0.0492, 0.1266, 0.0897, -0.0187, -0.5097, 0.1213, 0.2433, -0.0213, 0.0881, -0.0090, 0.1138, -0.0549, -0.1710, 0.2349, 0.0137, -0.1674, 0.1086, 0.2948, 0.0451, 0.0225, -0.1031, 0.2718, 0.0698, 0.0161] |
| decision boundary | <DECIDE> | 5 | [-0.0569, 0.0379, 0.0882, 0.0836, ... x32]Token embedding d1 -0.0569 d2 0.0379 d3 0.0882 d4 0.0836 d5 0.0576 d6 -0.1174 d7 -0.1864 d8 -0.0343 d9 0.0766 d10 -0.0325 d11 0.1376 d12 0.2703 d13 -0.2004 d14 -0.1022 d15 0.1228 d16 0.2007 d17 0.0570 d18 -0.1798 d19 -0.0471 d20 0.0948 d21 -0.0053 d22 -0.0823 d23 -0.0130 d24 0.1171 d25 -0.0963 d26 0.0149 d27 -0.0113 d28 0.0398 d29 -0.0368 d30 -0.0361 d31 -0.0195 d32 0.0417 [-0.0569, 0.0379, 0.0882, 0.0836, 0.0576, -0.1174, -0.1864, -0.0343, 0.0766, -0.0325, 0.1376, 0.2703, -0.2004, -0.1022, 0.1228, 0.2007, 0.0570, -0.1798, -0.0471, 0.0948, -0.0053, -0.0823, -0.0130, 0.1171, -0.0963, 0.0149, -0.0113, 0.0398, -0.0368, -0.0361, -0.0195, 0.0417] | 558 internal 557 [-0.0731, 0.1419, -0.0002, 0.1386, ... x32]Position embedding d1 -0.0731 d2 0.1419 d3 -0.0002 d4 0.1386 d5 -0.1270 d6 -0.0494 d7 -0.0707 d8 -0.0095 d9 -0.0494 d10 0.0134 d11 -0.0615 d12 0.1419 d13 0.1132 d14 -0.1277 d15 -0.0222 d16 -0.1243 d17 0.0043 d18 0.0062 d19 0.0570 d20 -0.0974 d21 0.0987 d22 0.0625 d23 0.1103 d24 -0.0100 d25 0.0065 d26 0.0641 d27 -0.0393 d28 0.0456 d29 -0.0328 d30 0.0415 d31 0.0906 d32 -0.1108 [-0.0731, 0.1419, -0.0002, 0.1386, -0.1270, -0.0494, -0.0707, -0.0095, -0.0494, 0.0134, -0.0615, 0.1419, 0.1132, -0.1277, -0.0222, -0.1243, 0.0043, 0.0062, 0.0570, -0.0974, 0.0987, 0.0625, 0.1103, -0.0100, 0.0065, 0.0641, -0.0393, 0.0456, -0.0328, 0.0415, 0.0906, -0.1108] | token vector + position vector [-0.1299, 0.1798, 0.0880, 0.2222, ... x32]Combined representation d1 -0.1299 d2 0.1798 d3 0.0880 d4 0.2222 d5 -0.0694 d6 -0.1668 d7 -0.2572 d8 -0.0438 d9 0.0272 d10 -0.0191 d11 0.0760 d12 0.4122 d13 -0.0871 d14 -0.2300 d15 0.1006 d16 0.0765 d17 0.0613 d18 -0.1736 d19 0.0099 d20 -0.0026 d21 0.0934 d22 -0.0198 d23 0.0973 d24 0.1071 d25 -0.0898 d26 0.0790 d27 -0.0506 d28 0.0854 d29 -0.0696 d30 0.0054 d31 0.0711 d32 -0.0691 [-0.1299, 0.1798, 0.0880, 0.2222, -0.0694, -0.1668, -0.2572, -0.0438, 0.0272, -0.0191, 0.0760, 0.4122, -0.0871, -0.2300, 0.1006, 0.0765, 0.0613, -0.1736, 0.0099, -0.0026, 0.0934, -0.0198, 0.0973, 0.1071, -0.0898, 0.0790, -0.0506, 0.0854, -0.0696, 0.0054, 0.0711, -0.0691] |
| training target | <TARGET> | 6 | [-0.3874, 0.2197, 0.3024, 0.2672, ... x32]Token embedding d1 -0.3874 d2 0.2197 d3 0.3024 d4 0.2672 d5 -0.3247 d6 0.2365 d7 0.2366 d8 0.1807 d9 -0.1375 d10 -0.0522 d11 0.0720 d12 0.8767 d13 -0.0548 d14 0.1198 d15 0.4036 d16 -0.2200 d17 0.2526 d18 0.3392 d19 -0.6267 d20 0.1724 d21 -0.0363 d22 -0.5656 d23 0.2376 d24 -0.3313 d25 -0.3047 d26 -0.1016 d27 -0.4406 d28 0.0528 d29 0.5495 d30 0.1890 d31 0.2000 d32 -0.5643 [-0.3874, 0.2197, 0.3024, 0.2672, -0.3247, 0.2365, 0.2366, 0.1807, -0.1375, -0.0522, 0.0720, 0.8767, -0.0548, 0.1198, 0.4036, -0.2200, 0.2526, 0.3392, -0.6267, 0.1724, -0.0363, -0.5656, 0.2376, -0.3313, -0.3047, -0.1016, -0.4406, 0.0528, 0.5495, 0.1890, 0.2000, -0.5643] | 559 internal 558 [0.0658, 0.1279, -0.0509, -0.1678, ... x32]Position embedding d1 0.0658 d2 0.1279 d3 -0.0509 d4 -0.1678 d5 0.0469 d6 -0.1028 d7 -0.0374 d8 -0.0837 d9 -0.0584 d10 0.2315 d11 -0.0493 d12 -0.0160 d13 -0.0332 d14 -0.0749 d15 0.2411 d16 0.1080 d17 0.0437 d18 -0.1133 d19 0.0669 d20 0.2327 d21 0.1189 d22 -0.0489 d23 -0.0179 d24 0.0345 d25 -0.1336 d26 0.0355 d27 0.0622 d28 -0.1055 d29 -0.0419 d30 0.1992 d31 -0.0716 d32 0.1539 [0.0658, 0.1279, -0.0509, -0.1678, 0.0469, -0.1028, -0.0374, -0.0837, -0.0584, 0.2315, -0.0493, -0.0160, -0.0332, -0.0749, 0.2411, 0.1080, 0.0437, -0.1133, 0.0669, 0.2327, 0.1189, -0.0489, -0.0179, 0.0345, -0.1336, 0.0355, 0.0622, -0.1055, -0.0419, 0.1992, -0.0716, 0.1539] | token vector + position vector [-0.3217, 0.3476, 0.2515, 0.0994, ... x32]Combined representation d1 -0.3217 d2 0.3476 d3 0.2515 d4 0.0994 d5 -0.2778 d6 0.1337 d7 0.1992 d8 0.0970 d9 -0.1959 d10 0.1793 d11 0.0227 d12 0.8607 d13 -0.0880 d14 0.0449 d15 0.6446 d16 -0.1120 d17 0.2962 d18 0.2259 d19 -0.5598 d20 0.4051 d21 0.0826 d22 -0.6145 d23 0.2198 d24 -0.2968 d25 -0.4383 d26 -0.0661 d27 -0.3784 d28 -0.0527 d29 0.5077 d30 0.3882 d31 0.1284 d32 -0.4104 [-0.3217, 0.3476, 0.2515, 0.0994, -0.2778, 0.1337, 0.1992, 0.0970, -0.1959, 0.1793, 0.0227, 0.8607, -0.0880, 0.0449, 0.6446, -0.1120, 0.2962, 0.2259, -0.5598, 0.4051, 0.0826, -0.6145, 0.2198, -0.2968, -0.4383, -0.0661, -0.3784, -0.0527, 0.5077, 0.3882, 0.1284, -0.4104] |
| target action label | ACTION | 106 | [1.1901, -0.7510, 0.1811, -0.5178, ... x32]Token embedding d1 1.1901 d2 -0.7510 d3 0.1811 d4 -0.5178 d5 -0.7195 d6 -1.1292 d7 -0.7328 d8 -0.4168 d9 0.6391 d10 0.3315 d11 0.3509 d12 0.5400 d13 -0.7298 d14 0.1672 d15 0.1561 d16 0.0322 d17 -0.0113 d18 0.0659 d19 1.4041 d20 1.7817 d21 -1.8546 d22 0.0839 d23 0.8667 d24 -0.2555 d25 0.7907 d26 0.7003 d27 -0.6991 d28 -0.1649 d29 -0.0225 d30 -0.0757 d31 -0.2035 d32 0.0275 [1.1901, -0.7510, 0.1811, -0.5178, -0.7195, -1.1292, -0.7328, -0.4168, 0.6391, 0.3315, 0.3509, 0.5400, -0.7298, 0.1672, 0.1561, 0.0322, -0.0113, 0.0659, 1.4041, 1.7817, -1.8546, 0.0839, 0.8667, -0.2555, 0.7907, 0.7003, -0.6991, -0.1649, -0.0225, -0.0757, -0.2035, 0.0275] | 560 internal 559 [0.0879, -0.0092, 0.1017, 0.1759, ... x32]Position embedding d1 0.0879 d2 -0.0092 d3 0.1017 d4 0.1759 d5 0.2396 d6 0.0108 d7 0.0297 d8 0.1056 d9 0.0278 d10 0.0308 d11 0.0061 d12 -0.1967 d13 -0.2072 d14 0.0783 d15 0.1501 d16 0.0650 d17 0.1967 d18 0.2498 d19 0.0381 d20 -0.2203 d21 0.0110 d22 -0.0796 d23 -0.2436 d24 0.0604 d25 -0.0669 d26 -0.1910 d27 0.0540 d28 -0.0161 d29 -0.1136 d30 0.0967 d31 -0.0907 d32 -0.0179 [0.0879, -0.0092, 0.1017, 0.1759, 0.2396, 0.0108, 0.0297, 0.1056, 0.0278, 0.0308, 0.0061, -0.1967, -0.2072, 0.0783, 0.1501, 0.0650, 0.1967, 0.2498, 0.0381, -0.2203, 0.0110, -0.0796, -0.2436, 0.0604, -0.0669, -0.1910, 0.0540, -0.0161, -0.1136, 0.0967, -0.0907, -0.0179] | token vector + position vector [1.2780, -0.7602, 0.2828, -0.3419, ... x32]Combined representation d1 1.2780 d2 -0.7602 d3 0.2828 d4 -0.3419 d5 -0.4799 d6 -1.1184 d7 -0.7030 d8 -0.3112 d9 0.6669 d10 0.3624 d11 0.3570 d12 0.3432 d13 -0.9370 d14 0.2455 d15 0.3063 d16 0.0972 d17 0.1854 d18 0.3157 d19 1.4422 d20 1.5613 d21 -1.8437 d22 0.0044 d23 0.6231 d24 -0.1952 d25 0.7238 d26 0.5093 d27 -0.6451 d28 -0.1810 d29 -0.1361 d30 0.0210 d31 -0.2942 d32 0.0097 [1.2780, -0.7602, 0.2828, -0.3419, -0.4799, -1.1184, -0.7030, -0.3112, 0.6669, 0.3624, 0.3570, 0.3432, -0.9370, 0.2455, 0.3063, 0.0972, 0.1854, 0.3157, 1.4422, 1.5613, -1.8437, 0.0044, 0.6231, -0.1952, 0.7238, 0.5093, -0.6451, -0.1810, -0.1361, 0.0210, -0.2942, 0.0097] |
| target action value | BET | 125 | [-0.3576, -0.2687, -0.1866, 0.1018, ... x32]Token embedding d1 -0.3576 d2 -0.2687 d3 -0.1866 d4 0.1018 d5 0.7383 d6 -1.1938 d7 -0.9584 d8 -0.1491 d9 1.4157 d10 -0.0103 d11 0.2909 d12 0.0747 d13 -0.1644 d14 -0.9572 d15 0.2177 d16 -0.0509 d17 0.7715 d18 0.4062 d19 0.1258 d20 0.1434 d21 0.0824 d22 0.1597 d23 0.0438 d24 1.1746 d25 0.3527 d26 0.0965 d27 0.3358 d28 -0.4032 d29 1.4009 d30 0.7081 d31 -0.3188 d32 -0.6555 [-0.3576, -0.2687, -0.1866, 0.1018, 0.7383, -1.1938, -0.9584, -0.1491, 1.4157, -0.0103, 0.2909, 0.0747, -0.1644, -0.9572, 0.2177, -0.0509, 0.7715, 0.4062, 0.1258, 0.1434, 0.0824, 0.1597, 0.0438, 1.1746, 0.3527, 0.0965, 0.3358, -0.4032, 1.4009, 0.7081, -0.3188, -0.6555] | 561 internal 560 [-0.1001, 0.1429, -0.0133, 0.1015, ... x32]Position embedding d1 -0.1001 d2 0.1429 d3 -0.0133 d4 0.1015 d5 0.1719 d6 -0.0043 d7 0.0548 d8 -0.0198 d9 0.0562 d10 0.1530 d11 0.0212 d12 -0.1080 d13 0.0643 d14 0.0535 d15 0.1353 d16 0.1134 d17 -0.0637 d18 -0.0870 d19 0.0324 d20 -0.0310 d21 -0.0500 d22 -0.0119 d23 0.0608 d24 -0.0140 d25 -0.0038 d26 -0.0951 d27 -0.0908 d28 0.0416 d29 -0.0414 d30 -0.0048 d31 -0.1292 d32 0.1486 [-0.1001, 0.1429, -0.0133, 0.1015, 0.1719, -0.0043, 0.0548, -0.0198, 0.0562, 0.1530, 0.0212, -0.1080, 0.0643, 0.0535, 0.1353, 0.1134, -0.0637, -0.0870, 0.0324, -0.0310, -0.0500, -0.0119, 0.0608, -0.0140, -0.0038, -0.0951, -0.0908, 0.0416, -0.0414, -0.0048, -0.1292, 0.1486] | token vector + position vector [-0.4577, -0.1258, -0.1999, 0.2033, ... x32]Combined representation d1 -0.4577 d2 -0.1258 d3 -0.1999 d4 0.2033 d5 0.9102 d6 -1.1981 d7 -0.9036 d8 -0.1688 d9 1.4719 d10 0.1427 d11 0.3121 d12 -0.0334 d13 -0.1001 d14 -0.9037 d15 0.3530 d16 0.0625 d17 0.7078 d18 0.3192 d19 0.1582 d20 0.1124 d21 0.0324 d22 0.1479 d23 0.1046 d24 1.1606 d25 0.3490 d26 0.0013 d27 0.2450 d28 -0.3616 d29 1.3595 d30 0.7033 d31 -0.4480 d32 -0.5069 [-0.4577, -0.1258, -0.1999, 0.2033, 0.9102, -1.1981, -0.9036, -0.1688, 1.4719, 0.1427, 0.3121, -0.0334, -0.1001, -0.9037, 0.3530, 0.0625, 0.7078, 0.3192, 0.1582, 0.1124, 0.0324, 0.1479, 0.1046, 1.1606, 0.3490, 0.0013, 0.2450, -0.3616, 1.3595, 0.7033, -0.4480, -0.5069] |
| sequence end | <EOS> | 3 | [1.1566, -0.1217, -0.9127, -1.0163, ... x32]Token embedding d1 1.1566 d2 -0.1217 d3 -0.9127 d4 -1.0163 d5 0.4157 d6 0.0981 d7 -0.3451 d8 -0.2523 d9 -0.1362 d10 0.4976 d11 0.1328 d12 -0.0936 d13 0.0257 d14 0.0471 d15 0.3380 d16 0.5770 d17 0.2971 d18 -0.6806 d19 -0.1733 d20 -0.0857 d21 0.0282 d22 -0.0057 d23 -1.9625 d24 0.0689 d25 -0.7014 d26 -0.2949 d27 -0.7746 d28 0.0378 d29 -0.2336 d30 0.3027 d31 0.6398 d32 -0.0082 [1.1566, -0.1217, -0.9127, -1.0163, 0.4157, 0.0981, -0.3451, -0.2523, -0.1362, 0.4976, 0.1328, -0.0936, 0.0257, 0.0471, 0.3380, 0.5770, 0.2971, -0.6806, -0.1733, -0.0857, 0.0282, -0.0057, -1.9625, 0.0689, -0.7014, -0.2949, -0.7746, 0.0378, -0.2336, 0.3027, 0.6398, -0.0082] | 570 internal 569 [0.0245, 0.0137, -0.1581, 0.0183, ... x32]Position embedding d1 0.0245 d2 0.0137 d3 -0.1581 d4 0.0183 d5 -0.0580 d6 0.0038 d7 0.0581 d8 -0.0445 d9 -0.1068 d10 0.0151 d11 0.1557 d12 -0.0117 d13 0.0499 d14 0.0287 d15 0.1621 d16 0.0569 d17 -0.0054 d18 0.0081 d19 0.0789 d20 0.0781 d21 -0.0468 d22 0.0885 d23 0.0372 d24 -0.0226 d25 0.0311 d26 0.0937 d27 0.0237 d28 -0.0100 d29 -0.0410 d30 -0.0205 d31 0.0330 d32 -0.0079 [0.0245, 0.0137, -0.1581, 0.0183, -0.0580, 0.0038, 0.0581, -0.0445, -0.1068, 0.0151, 0.1557, -0.0117, 0.0499, 0.0287, 0.1621, 0.0569, -0.0054, 0.0081, 0.0789, 0.0781, -0.0468, 0.0885, 0.0372, -0.0226, 0.0311, 0.0937, 0.0237, -0.0100, -0.0410, -0.0205, 0.0330, -0.0079] | token vector + position vector [1.1811, -0.1079, -1.0708, -0.9980, ... x32]Combined representation d1 1.1811 d2 -0.1079 d3 -1.0708 d4 -0.9980 d5 0.3577 d6 0.1019 d7 -0.2870 d8 -0.2968 d9 -0.2430 d10 0.5126 d11 0.2885 d12 -0.1053 d13 0.0756 d14 0.0758 d15 0.5001 d16 0.6340 d17 0.2917 d18 -0.6726 d19 -0.0944 d20 -0.0076 d21 -0.0186 d22 0.0828 d23 -1.9253 d24 0.0462 d25 -0.6703 d26 -0.2012 d27 -0.7509 d28 0.0278 d29 -0.2746 d30 0.2822 d31 0.6728 d32 -0.0161 [1.1811, -0.1079, -1.0708, -0.9980, 0.3577, 0.1019, -0.2870, -0.2968, -0.2430, 0.5126, 0.2885, -0.1053, 0.0756, 0.0758, 0.5001, 0.6340, 0.2917, -0.6726, -0.0944, -0.0076, -0.0186, 0.0828, -1.9253, 0.0462, -0.6703, -0.2012, -0.7509, 0.0278, -0.2746, 0.2822, 0.6728, -0.0161] |
Displayed positions start at 1; the model indexes them internally from 0. Sequence length: 570 tokens.
which symbol this is
where it appears here
[32 numbers][32 numbers][32 numbers]The token embedding answers "what am I?" The positional embedding answers "where am I?" They are added, not concatenated, so the model works with this token, here.
token_embedding + position_embeddingLater, training can adjust these positional coordinates too.
[x, y, z][d1, d2, ... d32]Position does not itself decide the next token. It provides order structure that later model machinery can use.
The table uses the trained two-block checkpoint specimen: token_embedding.weight and position_embedding.weight.
Introduce one attention head
Each token already has a 32D representation. One attention head updates each token position using information from the current and allowed earlier positions.
Shown one token position at a time conceptually; the implementation can calculate many positions in parallel.
Teaching values - not real Pokerese model weights
Current token: BIT
Current token: DOG
Last section: HEAD 1 used attention shares.
This section: we show how those shares are calculated.
Where did DOG's 20% / 60% / 20% shares come from?
Query, Key and Value are three separate jobs inside this one attention head.
These phrases are teaching shorthand. Query, Key and Value are learned numeric projections, not human-readable questions or facts.
Teaching shorthand: What am I looking for?
Teaching shorthand: How well does this position match the Query?
This is what gets mixed if the position receives attention.
Query(DOG) = [2, 1, 0]Simplified teaching numbers - not real Pokerese Q/K values or numerically exact softmax output.
MAN -> Key(MAN) = [1, 0, 1]BIT -> Key(BIT) = [2, 1, 1]DOG -> Key(DOG) = [1, 1, 0]The future token does not participate.
comparison scores -> normalise into attention shares -> 20% / 60% / 20%
Query + Key determine how much attention a position receives.
The 1 / 3 / 1 scores and 20 / 60 / 20 shares are simplified teaching numbers, not a numerically exact softmax example.
The Keys helped decide the shares. The Values are what gets mixed.
Value determines what information is actually taken from that position.
20% x [1, 2, 0]= [0.2, 0.4, 0]60% x [0, 1, 2]= [0, 0.6, 1.2]20% x [2, 0, 1]= [0.4, 0, 0.2]20% x Value(MAN) + 60% x Value(BIT) + 20% x Value(DOG) = [0.6, 1, 1.4]attention output for DOG
Show the maths
The real Pokerese one-head implementation uses learned 32D linear projections for Query, Key and Value.
q = query(x), k = key(x), v = value(x)scaled Query-Key scores -> causal mask -> softmax -> attention sharesscore = Q dot K / sqrt(32)output = sum(attention_share x V)q @ k.transpose(-2, -1) / math.sqrt(self.embedding_dim)attention_weights @ vNow we know how one attention head calculates its shares.
From one attention head to four
We now know how one attention head works. Pokerese's transformer uses four of them in parallel.
Each head has its own learned Query, Key and Value projections, so each can produce a different attention pattern for the same token.
Four independent attention views. "View" is teaching shorthand; each head is a separate learned attention calculation.
Illustrative attention patterns - not real Pokerese model values.
The model does not become 128 dimensions wide simply because it has four heads. The 32 dimensions are divided across the heads and then recombined.
x.view(batch, length, num_heads, head_dim).transpose(1, 2) -> transpose heads back, contiguous, view(batch, length, heads * head_dim) -> Wo = nn.Linear(model_dim, model_dim)Inspect one authentic four-head snapshot
This is compact stored evidence for one recorded token. It shows different learned attention patterns, but it does not name what any head means.
Authentic stored multi-head attention evidence - secondary inspection. Source: artifacts/causal_transformer/v6_inherited_hero_two_block/snapshots.json
Build one transformer block
We now have four attention heads producing a combined 32D attention result.
A Pokerese transformer block does more than attention. It normalises the representation before each sub-layer, mixes in the attention result with a residual addition, processes the result through a small feed-forward network, then uses another residual addition to produce another 32D representation.
DOG representation before the block
normalise the 32 numbers before attention
positions exchange information
attention result is projected back to 32D
existing representation + attention result
normalise the 32 numbers before feed-forward
32D -> 128D -> GELU -> 32D
current representation + feed-forward result
DOG representation after the block
Residual additions
Instead of throwing away the representation that entered a sub-layer, the block adds the new result back to it.
x = x + attention_outx = x + self.feed_forward(self.ln_ff(x))Keep the old information and add the new information.
Feed-forward network
Attention moves information between positions. The feed-forward network transforms each position separately.
Source-grounded details
The block is implemented by TransformerBlock in src/pokerese/causal_transformer/model.py.
nn.LayerNorm(model_dim) before attention, then x = x + attention_outnn.LayerNorm(model_dim) before feed-forward, then x = x + self.feed_forward(self.ln_ff(x))nn.Linear(model_dim, hidden_dim) -> nn.GELU() -> nn.Linear(hidden_dim, model_dim)dropout: noneOne transformer block combines two kinds of processing: attention lets positions exchange information; the feed-forward network processes each position individually.
The block outputs another 32D representation, ready for the next stage.
Add the second transformer block
Block 1 has already changed each token's representation using context from the sequence.
Block 2 receives those updated representations and performs the same kinds of operations again, using its own learned parameters.
The representation stays 32-dimensional throughout.
Same architecture. Different learned weights.
Block 1: what's inside?
Block 2: what's inside?
One-block model
Input -> Block 1 -> outputTwo-block model
Input -> Block 1 -> Block 2 -> outputSource-grounded stack facts
blocks: 2Block 2 input: x returned by Block 1Between blocks: noneAfter Block 2: logits = self.vocabulary_projection(x)blocks.0.* and blocks.1.* are distinct ModuleList entries with separate learned parametersThe second block does not add new kinds of machinery. It gives the model another chance to transform representations that have already been enriched by the first block.
We now have the core architecture of the two-block Pokerese transformer.
Next, we can look at how this entire network actually learns.
Before training: random start
We have built the complete two-block transformer. But building the machinery does not teach it poker.
At the start, its learned numbers are essentially random.
The architecture is deliberate. The learned numbers inside it are not.
Fixed example pokerese_0020260804_T226_0529230991:H00017:D002:teacher_concise. The input has 558 symbols and ends at <DECIDE>.
<BOS> <INPUT> <CONTEXT> ... STREET FLOP ...
PERSPECTIVE_POS CO ... HAND_CLASS 55 ... BOARD_STREET FLOP ...
POT_BB <NUM> D5 D7 D2 </NUM> ... TO_CALL_BB <NUM> D0 </NUM> ...
ACTION_COUNT N9 ... LEGAL FOLD TRUE LEGAL CHECK TRUE LEGAL CALL FALSE LEGAL BET TRUE LEGAL RAISE TRUE ...
BET_OPTIONS_BB COUNT N4 <NUM> D1 D8 D9 </NUM> ... <DECIDE>Show the full Pokerese input
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET FLOP TABLE_SEATS N8 PLAYERS_REMAINING N8 ACTIVE_PLAYERS N2 HAND_NUMBER N17 LEVEL N1 BUTTON_SEAT N1 PERSPECTIVE_SEAT N0 PERSPECTIVE_POS CO PERSPECTIVE_REL_BTN N7 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS CO REL_BTN N7 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D1 D9 D2 D5 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N1 POS BTN REL_BTN N0 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D3 D1 D4 D5 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N2 POS SB REL_BTN N1 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D5 D9 D7 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N3 POS BB REL_BTN N2 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D1 D5 D8 D5 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N4 POS UTG REL_BTN N3 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D1 D0 D3 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N5 POS UTG+1 REL_BTN N4 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D8 D7 D5 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N6 POS MP1 REL_BTN N5 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D0 D9 D8 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N7 POS MP2 REL_BTN N6 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D3 D9 D9 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS 55 HOLE CARD RANK 5 SUIT H END_CARD CARD RANK 5 SUIT D END_CARD END_HOLE BOARD_STREET FLOP BOARD_COUNT N3 BOARD CARD RANK T SUIT D END_CARD CARD RANK 9 SUIT H END_CARD CARD RANK K SUIT H END_CARD END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D5 D7 D2 </NUM> HIGHEST_WAGER_BB <NUM> D0 </NUM> ACTOR_WAGER_BB <NUM> D0 </NUM> TO_CALL_BB <NUM> D0 </NUM> MIN_BET_BB <NUM> D1 D0 D0 </NUM> MAX_BET_BB <NUM> D1 D9 D2 D5 </NUM> MIN_RAISE_TO_BB <NUM> D1 D0 D0 </NUM> MAX_RAISE_TO_BB <NUM> D1 D9 D2 D5 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N9 ACT ORDER N1 STREET PREFLOP SEAT N4 POS UTG ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N2 STREET PREFLOP SEAT N5 POS UTG+1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N3 STREET PREFLOP SEAT N6 POS MP1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N4 STREET PREFLOP SEAT N7 POS MP2 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N5 STREET PREFLOP SEAT N0 POS CO ACTION RAISE ALL_IN FALSE AMOUNT_BB NA TO_BB <NUM> D2 D3 D1 </NUM> END_ACT ACT ORDER N6 STREET PREFLOP SEAT N1 POS BTN ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N7 STREET PREFLOP SEAT N2 POS SB ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N8 STREET PREFLOP SEAT N3 POS BB ACTION CALL ALL_IN FALSE AMOUNT_BB <NUM> D1 D2 D1 </NUM> TO_BB NA END_ACT ACT ORDER N9 STREET FLOP SEAT N3 POS BB ACTION CHECK ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT <LEGAL> LEGAL FOLD TRUE LEGAL CHECK TRUE LEGAL CALL FALSE LEGAL BET TRUE LEGAL RAISE TRUE CALL_AMOUNT_BB <NUM> D0 </NUM> BET_OPTIONS_BB COUNT N4 <NUM> D1 D8 D9 </NUM> <NUM> D2 D8 D6 </NUM> <NUM> D4 D2 D9 </NUM> <NUM> D5 D7 D2 </NUM> RAISE_OPTIONS_BB COUNT N3 <NUM> D1 D0 D0 </NUM> <NUM> D1 D5 D0 </NUM> <NUM> D2 D0 D0 </NUM> <DECIDE><TARGET> ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 </NUM> <EOS>The teacher continuation for this held-out teaching specimen; it was not used to train the selected checkpoint.
N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131Decoded action: UNK; grammar: malformed.
The model can perform all of the calculations we have just built, but the learned parameters have not yet been adjusted from their initial values.
Nothing has been learned yet.
The first stored mismatch is token 0: target ACTION, random attempt N1131.
See the random model's first token choices
N1131N1131N100N966<TARGET>N923N1211J2oN571N1131N1131N145N415N698N230N766N438N977N1131N1131N559J2oN381N485N1215N145N506N1131N1131N716N761N135N1037ACTIVEJ2oN390N1131N1131N1057N127N1037N656Q8sN649N404N1131N1131J2oN926N867N390N716N1102K7oN1131N1131N390ACTIVEN506J2s85sN1057N127N1131N1131N183N390N672AQoN1135N98272sN1131N1131J2oN1215N398N506N390N86N624N1131N1131N390N105792sN656N104N1135N127N1131N1131N749N982N390N380N695N1123N1255N1131N1131N1252N390N982N716N135<CARDS>BOARDSee initial attention evidence
Stored initial attention exists for this example, but it comes from random learned parameters and is not an explanation of useful poker behaviour.
So how do we turn "that was wrong" into numbers the model can learn from?
Turning a wrong prediction into loss
Pokerese input ... <DECIDE>
ACTIONWhat did the random model think might come next?
The model chooses among 1,609 possible Pokerese tokens. It does not simply pick one answer. Internally it scores all possible next tokens.
| Candidate | Probability |
|---|---|
| N1131 | 92.484% |
| N100 | 3.032% |
| N966 | 2.027% |
| <TARGET> | 0.772% |
| N923 | 0.638% |
| N1211 | 0.573% |
| J2o | 0.128% |
| N571 | 6.957e-4 |
Target tokenACTION | 3.467e-13 |
ACTION was outside the stored top-8, so this row comes from a compact read-only full-vocabulary softmax specimen for the same epoch-0 state.
ACTIONThe random model gave ACTION very little probability, so the loss for this token is large.
Cross-entropy uses the probability assigned to the target token, not simply whether the model's top guess was right or wrong.
This is the loss for one target token at one position. The real training loss combines scored target-token positions according to the target-only mask.
Simple examples
ACTION probability: 1% → high loss
ACTION probability: 80% → low loss
At random start, ACTION was not the model's preferred next token.
The random model preferred N1131 while the target token was ACTION.
Pokerese uses target-only causal loss. We only score the continuation the model is supposed to learn after the decision boundary; the long input describing the hand is context, not something the model is penalised for predicting.
Show the loss maths
The real training code receives logits and computes cross-entropy directly with F.cross_entropy(logits[loss_mask], labels[loss_mask]).
For a target-token probability p: loss = -log(p).
loss = -log(P(target token))loss = -log(P(ACTION))= 28.69027028.690269; absolute difference 1.135e-7.We can now measure how wrong a prediction is.
Gradients: which way would reduce the loss?
We now have a loss number. The next question is which direction each learned number should move to make that loss smaller.
parameter = 2.0loss = some function of parametergradient = +0.5Positive gradient means increasing this parameter locally increases loss. To reduce loss, the downhill direction is generally the opposite direction.
Negative gradient means increasing this parameter locally decreases loss.
This uses the same fixed example, same epoch-0 random-start state, and the same first target token ACTION from the Loss lesson.
BET embedding d1token_embedding.weight[125, 0]
-0.959169328213current learned number
-0.001388640492local loss sensitivity
Negative gradient: increasing this number locally decreases this one-token loss.
For this one token, the local downhill direction is higher.
The parameter value and the gradient are different things. The gradient is not the new value and not the amount to change the parameter by.
Backpropagation bridge
Doing this one parameter at a time would be impossibly slow. Backpropagation computes the gradients for all connected learned parameters efficiently by working backwards through the calculations that produced the loss.
Backpropagation does not decide the target, choose a learning rate, or update parameters by itself. It computes gradients.
What does a gradient mean mathematically?
A gradient is the derivative of loss with respect to a parameter.
dLoss / dParameterIt measures the local slope of loss with respect to one learned number.
Optimizer: actually change the learned number
Gradient tells us which local direction would reduce loss. But the gradient does not change anything by itself.
The optimizer reads the gradients and decides how to adjust the learned parameters.
Simplified intuition
new value = old value - learning rate x gradientPositive gradient: this simple rule nudges downward.
Negative gradient: this simple rule nudges upward.
Here the real gradient is -0.001388640492, so the simple sign intuition points upward.
direction / sensitivity
step-size control
update rule
result
torch.optim.Adam
Pokerese does not use the simple rule above directly. Adam keeps running information about gradients and uses that, plus weight decay here, to determine the update.
Why is the update not just learning_rate x gradient?
This is Adam's first step from a fresh optimizer state. Adam uses gradient moments and an epsilon term, and this run also has weight decay. For this first specimen the direction still goes upward, but the size is governed by Adam's rule rather than by multiplying the raw gradient by the learning rate.
The gradient was information. The optimizer used that information to actually change the parameter.
This first Adam step moved the parameter upward, matching the simple downhill-direction intuition for this negative gradient.
computes gradients.
uses gradients to calculate updates.
changes the learned numbers.
One learned number has now actually changed.
The real model does this across all trainable parameters involved in the training loss.
Next: put the whole thing together as one complete training step.
Specimen boundary
This card is an isolated teaching update for the fixed one-position ACTION-token loss. The authentic training loop uses one optimizer step per shuffled length-bucketed batch of full target-sequence loss; that broader loop is for the next lesson.
One complete real training step
The microscope showed one tiny piece. This is the real unit of training.
Real training does not train one token in isolation. Pokerese processes a small group together, averages cross-entropy over all masked target-token positions, computes gradients from that combined loss, and then Adam updates the trainable parameters that received gradients.
<BOS> <INPUT> ... <DECIDE> <TARGET> ACTION ... <EOS>In this first real batch, 8,270 real context positions and 2 padding positions are excluded from the loss.
Training step complete.
Show exact first-batch identity
Training examples are sorted by input length and example ID, chunked into batches of 16, then the batch order is shuffled with seed + epoch * 1009. For epoch 1, that shuffle seed is 20261813.
1. pokerese_0020260804_T186_2865743852:H00066:D004:teacher_concise2. pokerese_0020260804_T187_0819170647:H00083:D004:teacher_concise3. pokerese_0020260804_T003_3453176045:H00066:D004:teacher_concise4. pokerese_0020260804_T008_1806976132:H00039:D002:teacher_concise5. pokerese_0020260804_T014_2403141126:H00054:D004:teacher_concise6. pokerese_0020260804_T016_2565509468:H00003:D002:teacher_concise7. pokerese_0020260804_T020_2965096320:H00050:D003:teacher_concise8. pokerese_0020260804_T023_1114052673:H00068:D004:teacher_concise9. pokerese_0020260804_T028_3789034584:H00069:D004:teacher_concise10. pokerese_0020260804_T030_1938142489:H00028:D002:teacher_concise11. pokerese_0020260804_T076_2413011241:H00056:D004:teacher_concise12. pokerese_0020260804_T104_3148436168:H00029:D002:teacher_concise13. pokerese_0020260804_T107_1298854793:H00028:D002:teacher_concise14. pokerese_0020260804_T107_1298854793:H00072:D005:teacher_concise15. pokerese_0020260804_T115_2055929953:H00044:D003:teacher_concise16. pokerese_0020260804_T115_2055929953:H00057:D003:teacher_conciseThat was one training step: one batch.
The model now moves to the next batch and does the same thing again.
When it has worked through the whole training set once, that is one epoch.
Epoch: one complete pass through the training set
The previous section showed one real batch.
An epoch is what happens when Pokerese repeats that same training step across the whole training set once.
The stored epoch training loss is the simple mean of 1,299 per-batch target-only cross-entropy losses, not a token-weighted mean across the whole epoch.
The model does not start over after an epoch. It keeps what it learned.
Adam state also persists. Gradients are cleared for each batch, but the model and optimizer are not recreated inside the epoch loop.
Pokerese uses the same training examples again, but the batch order changes between epochs.
See the real epoch structure
Batches are created by sorting examples by input length and example ID, chunking them into size-16 buckets, then shuffling the bucket order with seed + epoch * 1009.
Batch 1: pokerese_0020260804_T186_2865743852:H00066:D004:teacher_concise | pokerese_0020260804_T187_0819170647:H00083:D004:teacher_conciseBatch 2: pokerese_0020260804_T048_3698452903:H00066:D001:teacher_concise | pokerese_0020260804_T050_3895018749:H00070:D001:teacher_conciseBatch 3: pokerese_0020260804_T090_3774791427:H00008:D002:teacher_concise | pokerese_0020260804_T090_3774791427:H00009:D002:teacher_conciseFinal processed batch starts with pokerese_0020260804_T063_1026839255:H00044:D001:teacher_conciseEvery training example appears exactly once in this epoch. The smaller tail bucket has 11 examples, though the final processed batch after shuffling has 16.
One epoch is one complete trip through the training set.
Pokerese did not stop after one. It repeated this process for 12 epochs.
Next: watch what changed across those 12 passes.
12 epochs: watch the model learn
One epoch was not the end. Pokerese kept the parameters and Adam state, then repeated the same training process over the same training split with a new epoch-dependent batch order.
Training is gradual parameter adjustment, not one magical learning event.
Epoch 1 to epoch 12
Validation loss is stored, so it is shown as evidence. We will use validation properly in the next lesson.
See the stored per-epoch values
| Epoch | Train loss | Validation loss | Elapsed | Cumulative |
|---|---|---|---|---|
| 1 | 1.449616 | 0.618544 | 4.8 min | 5.4 min |
| 2 | 0.536809 | 0.509680 | 9.8 min | 15.3 min |
| 3 | 0.428490 | 0.447091 | 10.0 min | 25.3 min |
| 4 | 0.375490 | 0.425187 | 9.9 min | 35.2 min |
| 5 | 0.343101 | 0.407039 | 9.8 min | 45.0 min |
| 6 | 0.310574 | 0.329133 | 9.9 min | 54.9 min |
| 7 | 0.288386 | 0.324657 | 11.4 min | 1.10 h |
| 8 | 0.270638 | 0.309560 | 11.4 min | 1.29 h |
| 9 | 0.256837 | 0.318560 | 11.4 min | 1.48 h |
| 10 | 0.247347 | 0.287701 | 11.4 min | 1.68 h |
| 11 | 0.241523 | 0.290783 | 6.6 min | 1.79 h |
| 12 | 0.234080 | 0.263600 | 10.2 min | 1.95 h |
The target stays fixed. The model changes.
<TARGET> ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 </NUM> <EOS>N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D2 D3 </NUM> <EOS>ACTION CHECK <EOS>ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D6 </NUM> <EOS>ACTION CHECK <EOS>ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D2 D1 D8 </NUM> <EOS>ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 </NUM> <EOS>Show every stored epoch output
N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D2 D3 </NUM> <EOS>ACTION CHECK <EOS>ACTION CHECK <EOS>ACTION CHECK <EOS>ACTION CHECK <EOS>ACTION CHECK <EOS>ACTION CHECK <EOS>ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D6 </NUM> <EOS>ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 D6 </NUM> <EOS>ACTION CHECK <EOS>ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D2 D1 D8 </NUM> <EOS>ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 </NUM> <EOS>Each epoch begins from the parameters produced by the previous epoch. No resetting.
The stored best epoch is 12, and in this run the latest checkpoint is also the best checkpoint. We'll unpack what "best" means next.
Aggregate curve
Shows what happened across the training process in aggregate.
Same-hand strip
Shows what happened to one fixed microscope example. One hand is not the metric for the whole model.
Training progress is not perfectly smooth. Individual examples can improve, regress, and improve again even while aggregate loss falls.
The model has now been trained.
But how do we know which epoch to trust?
Next: validation and choosing the best checkpoint.
Validation: choosing which epoch to trust
Training changed the learned numbers. Now we need a held-out judge: which saved epoch should we trust?
Training is not the judge.
20,779 examples
Used to learn: forward pass, loss, backward, optimizer step, parameters change.
2,702 examples
Used to judge: forward pass and validation loss only. No backward, no optimizer step, no parameter update.
2,678 examples
Kept aside: not used for training and not used to choose the best checkpoint.
Training asks
"Can I fit the examples I am learning from?"
Validation asks
"How well does this model state work on held-out examples?"
The split is complete-tournament held-out: 200 training tournaments, 25 validation tournaments, and 25 test tournaments, with zero tournament overlap.
Lower validation loss is better
Validation loss does not have to improve every epoch: epoch 8 to 9 went 0.30956 to 0.31856, and epoch 10 to 11 went 0.287701 to 0.290783.
A checkpoint is a saved snapshot of the model state at an epoch. Pokerese chooses the checkpoint with the lowest validation target-token loss.
Latest means most recent. Best means best validation metric. They can differ; in this run, latest equals best.
If a model keeps improving on training examples while getting worse on held-out validation examples, it may be memorising the training set more than learning a useful pattern.
How validation is run
Validation uses target_only_cross_entropy and reports a token-weighted mean over selected validation target-token positions, rounded to six decimals. It does not call backward, create an optimizer, call optimizer.step, or update parameters.
Test decisions never update parameters or choose this checkpoint. Historical reconstruction inspected test examples during research; validation loss alone selects the best state. The full-test generation report below is a transparent held-out evaluation, not a newly sealed benchmark.
We now know which trained model state to trust.
Next: give that checkpoint a hand ending at <DECIDE> and let it generate Pokerese.
See the real stored Pokerese attention weights
In this recorded example, the current token is <DECIDE>. One stored head from the one-head-attention stage placed more attention on some earlier positions than others. The bars show where this head looked more strongly.
Position 558 in this recorded sequence.
These are exact stored token occurrences and weights from the one-head attention artifact, including any NA tokens. They are secondary verification, not the teaching example above.
Attention shows where this head placed weight. It is not a complete explanation of why the model makes a decision.
Let the model answer
This returns to your selected held-out situation. Only input through <DECIDE> reaches inference. The structural <TARGET> prefix is supplied; the model generates the rest.
Live checkpoint-backed inference is currently available only in the local research environment. Explore recorded generations in the training lessons and the evaluation below.
Compare with the recorded teacher target
<TARGET> ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 </NUM> <EOS>Held out from parameter training. Teacher agreement is not proof of optimal play.
What the trained model actually does
Unconstrained greedy generation on all 2,678 test decisions from 25 complete held-out tournaments. These decisions were excluded from parameter training, but have been inspected during research. This is an educational model, not a solver or production poker advisor.
| Measure | Result | Count / denominator |
|---|---|---|
| Action agreement | 87.15% | 2,334 / 2,678 |
| Concise grammar valid | 100.00% | 2,678 / 2,678 |
| EOS completed | 100.00% | 2,678 / 2,678 |
| Action allowed | 98.66% | 2,642 / 2,678 |
| Exact generated continuation | 76.36% | 2,045 / 2,678 |
| Exact numeric size on sized targets | 46.06% | 310 / 673 |
Macro F1: 0.7529, averaging the five action classes across all 2,678 decisions. Malformed: 0; unknown: 0; generation-limit failures: 0.
| Action | Support | Recall | Precision |
|---|---|---|---|
| BET | 138 | 55.07% | 69.72% |
| CALL | 202 | 37.62% | 75.25% |
| CHECK | 247 | 86.64% | 77.54% |
| FOLD | 1523 | 93.70% | 91.24% |
| RAISE | 568 | 95.25% | 86.15% |
Sizing is not reliable
Mean absolute numeric sizing error: 1,917,961.4 BB across 580 decodable outputs on 673 sized targets. Extreme generated numbers dominate this mean. A valid sentence can still contain an absurd poker size.
Numeric size equality alone does not establish matching action, all-in modifier, or AMOUNT/TO semantics; generated exact match checks the full continuation. The legality metric above checks the action category against encoded LEGAL flags, not sizing bounds. Recorded teacher targets can also disagree with those flags; inspect the allowed list when interpreting a failure.
Teacher-forced token metrics — a different question
With previous target tokens supplied: loss 0.269816, token accuracy 90.57% over 13,453 scored tokens; exact sequence 76.36% over 2,678 examples. These are computed separately from free generation, even when values coincide.
Real successes and failures
Examples are selected deterministically from the full test pass. “Correct” means exact teacher continuation, not proven optimal poker.
Correct BET
flop · 55 · pot 5.72 BB · facing 0 BB
pokerese_0020260804_T226_0529230991:H00017:D002:teacher_concise
ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 </NUM> <EOS>ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 </NUM> <EOS>Encoded allowed actions: BET, CHECK, FOLD, RAISE. Grammar: valid; action allowed: yes.
Exact held-out input
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET FLOP TABLE_SEATS N8 PLAYERS_REMAINING N8 ACTIVE_PLAYERS N2 HAND_NUMBER N17 LEVEL N1 BUTTON_SEAT N1 PERSPECTIVE_SEAT N0 PERSPECTIVE_POS CO PERSPECTIVE_REL_BTN N7 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS CO REL_BTN N7 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D1 D9 D2 D5 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N1 POS BTN REL_BTN N0 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D3 D1 D4 D5 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N2 POS SB REL_BTN N1 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D5 D9 D7 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N3 POS BB REL_BTN N2 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D1 D5 D8 D5 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N4 POS UTG REL_BTN N3 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D1 D0 D3 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N5 POS UTG+1 REL_BTN N4 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D8 D7 D5 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N6 POS MP1 REL_BTN N5 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D0 D9 D8 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N7 POS MP2 REL_BTN N6 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D3 D9 D9 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS 55 HOLE CARD RANK 5 SUIT H END_CARD CARD RANK 5 SUIT D END_CARD END_HOLE BOARD_STREET FLOP BOARD_COUNT N3 BOARD CARD RANK T SUIT D END_CARD CARD RANK 9 SUIT H END_CARD CARD RANK K SUIT H END_CARD END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D5 D7 D2 </NUM> HIGHEST_WAGER_BB <NUM> D0 </NUM> ACTOR_WAGER_BB <NUM> D0 </NUM> TO_CALL_BB <NUM> D0 </NUM> MIN_BET_BB <NUM> D1 D0 D0 </NUM> MAX_BET_BB <NUM> D1 D9 D2 D5 </NUM> MIN_RAISE_TO_BB <NUM> D1 D0 D0 </NUM> MAX_RAISE_TO_BB <NUM> D1 D9 D2 D5 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N9 ACT ORDER N1 STREET PREFLOP SEAT N4 POS UTG ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N2 STREET PREFLOP SEAT N5 POS UTG+1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N3 STREET PREFLOP SEAT N6 POS MP1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N4 STREET PREFLOP SEAT N7 POS MP2 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N5 STREET PREFLOP SEAT N0 POS CO ACTION RAISE ALL_IN FALSE AMOUNT_BB NA TO_BB <NUM> D2 D3 D1 </NUM> END_ACT ACT ORDER N6 STREET PREFLOP SEAT N1 POS BTN ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N7 STREET PREFLOP SEAT N2 POS SB ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N8 STREET PREFLOP SEAT N3 POS BB ACTION CALL ALL_IN FALSE AMOUNT_BB <NUM> D1 D2 D1 </NUM> TO_BB NA END_ACT ACT ORDER N9 STREET FLOP SEAT N3 POS BB ACTION CHECK ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT <LEGAL> LEGAL FOLD TRUE LEGAL CHECK TRUE LEGAL CALL FALSE LEGAL BET TRUE LEGAL RAISE TRUE CALL_AMOUNT_BB <NUM> D0 </NUM> BET_OPTIONS_BB COUNT N4 <NUM> D1 D8 D9 </NUM> <NUM> D2 D8 D6 </NUM> <NUM> D4 D2 D9 </NUM> <NUM> D5 D7 D2 </NUM> RAISE_OPTIONS_BB COUNT N3 <NUM> D1 D0 D0 </NUM> <NUM> D1 D5 D0 </NUM> <NUM> D2 D0 D0 </NUM> <DECIDE>Correct CALL
preflop · A9o · pot 7.17 BB · facing 4.87 BB
pokerese_0020260804_T226_0529230991:H00073:D001:teacher_concise
ACTION CALL <EOS>ACTION CALL <EOS>Encoded allowed actions: CALL, FOLD. Grammar: valid; action allowed: yes.
Exact held-out input
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET PREFLOP TABLE_SEATS N8 PLAYERS_REMAINING N3 ACTIVE_PLAYERS N2 HAND_NUMBER N73 LEVEL N6 BUTTON_SEAT N5 PERSPECTIVE_SEAT N7 PERSPECTIVE_POS BB PERSPECTIVE_REL_BTN N2 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS BTN REL_BTN N3 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N1 POS BTN REL_BTN N4 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N2 POS BTN REL_BTN N5 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N3 POS SB REL_BTN N6 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N4 POS BB REL_BTN N7 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N5 POS BTN REL_BTN N0 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D7 D7 D1 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N6 POS SB REL_BTN N1 STATUS ALL_IN PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D5 D9 D7 </NUM> END_PLAYER PLAYER SEAT N7 POS BB REL_BTN N2 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D8 D9 D6 </NUM> WAGER_BB <NUM> D1 D1 D0 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS A9o HOLE CARD RANK A SUIT S END_CARD CARD RANK 9 SUIT D END_CARD END_HOLE BOARD_STREET PREFLOP BOARD_COUNT N0 BOARD NONE END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D7 D1 D7 </NUM> HIGHEST_WAGER_BB <NUM> D5 D9 D7 </NUM> ACTOR_WAGER_BB <NUM> D1 D1 D0 </NUM> TO_CALL_BB <NUM> D4 D8 D7 </NUM> MIN_BET_BB <NUM> D0 </NUM> MAX_BET_BB <NUM> D1 D0 D0 D6 </NUM> MIN_RAISE_TO_BB <NUM> D1 D0 D8 D3 </NUM> MAX_RAISE_TO_BB <NUM> D1 D0 D0 D6 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N2 ACT ORDER N1 STREET PREFLOP SEAT N5 POS BTN ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N2 STREET PREFLOP SEAT N6 POS SB ACTION JAM_LEGACY ALL_IN TRUE AMOUNT_BB NA TO_BB <NUM> D5 D9 D7 </NUM> END_ACT <LEGAL> LEGAL FOLD TRUE LEGAL CHECK FALSE LEGAL CALL TRUE LEGAL BET FALSE LEGAL RAISE FALSE CALL_AMOUNT_BB <NUM> D4 D8 D7 </NUM> BET_OPTIONS_BB COUNT N0 NONE RAISE_OPTIONS_BB COUNT N0 NONE <DECIDE>Correct CHECK
turn · KQo · pot 9.86 BB · facing 0 BB
pokerese_0020260804_T226_0529230991:H00020:D003:teacher_concise
ACTION CHECK <EOS>ACTION CHECK <EOS>Encoded allowed actions: BET, CHECK, FOLD, RAISE. Grammar: valid; action allowed: yes.
Exact held-out input
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET TURN TABLE_SEATS N8 PLAYERS_REMAINING N8 ACTIVE_PLAYERS N2 HAND_NUMBER N20 LEVEL N1 BUTTON_SEAT N4 PERSPECTIVE_SEAT N0 PERSPECTIVE_POS UTG+1 PERSPECTIVE_REL_BTN N4 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS UTG+1 REL_BTN N4 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D2 D2 D2 D8 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N1 POS MP1 REL_BTN N5 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D8 D8 D3 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N2 POS MP2 REL_BTN N6 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D5 D6 D7 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N3 POS CO REL_BTN N7 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D5 D4 D6 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N4 POS BTN REL_BTN N0 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D9 D2 D3 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N5 POS SB REL_BTN N1 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D1 D5 D7 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N6 POS BB REL_BTN N2 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D6 D4 D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N7 POS UTG REL_BTN N3 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D3 D6 D9 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS KQo HOLE CARD RANK K SUIT H END_CARD CARD RANK Q SUIT S END_CARD END_HOLE BOARD_STREET TURN BOARD_COUNT N4 BOARD CARD RANK 5 SUIT D END_CARD CARD RANK 3 SUIT D END_CARD CARD RANK T SUIT D END_CARD CARD RANK J SUIT S END_CARD END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D9 D8 D6 </NUM> HIGHEST_WAGER_BB <NUM> D0 </NUM> ACTOR_WAGER_BB <NUM> D0 </NUM> TO_CALL_BB <NUM> D0 </NUM> MIN_BET_BB <NUM> D1 D0 D0 </NUM> MAX_BET_BB <NUM> D2 D2 D2 D8 </NUM> MIN_RAISE_TO_BB <NUM> D1 D0 D0 </NUM> MAX_RAISE_TO_BB <NUM> D2 D2 D2 D8 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N12 ACT ORDER N1 STREET PREFLOP SEAT N7 POS UTG ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N2 STREET PREFLOP SEAT N0 POS UTG+1 ACTION RAISE ALL_IN FALSE AMOUNT_BB NA TO_BB <NUM> D2 D4 D2 </NUM> END_ACT ACT ORDER N3 STREET PREFLOP SEAT N1 POS MP1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N4 STREET PREFLOP SEAT N2 POS MP2 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N5 STREET PREFLOP SEAT N3 POS CO ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N6 STREET PREFLOP SEAT N4 POS BTN ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N7 STREET PREFLOP SEAT N5 POS SB ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N8 STREET PREFLOP SEAT N6 POS BB ACTION CALL ALL_IN FALSE AMOUNT_BB <NUM> D1 D3 D2 </NUM> TO_BB NA END_ACT ACT ORDER N9 STREET FLOP SEAT N6 POS BB ACTION CHECK ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N10 STREET FLOP SEAT N0 POS UTG+1 ACTION BET ALL_IN FALSE AMOUNT_BB NA TO_BB <NUM> D1 D9 D6 </NUM> END_ACT ACT ORDER N11 STREET FLOP SEAT N6 POS BB ACTION CALL ALL_IN FALSE AMOUNT_BB <NUM> D1 D9 D6 </NUM> TO_BB NA END_ACT ACT ORDER N12 STREET TURN SEAT N6 POS BB ACTION CHECK ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT <LEGAL> LEGAL FOLD TRUE LEGAL CHECK TRUE LEGAL CALL FALSE LEGAL BET TRUE LEGAL RAISE TRUE CALL_AMOUNT_BB <NUM> D0 </NUM> BET_OPTIONS_BB COUNT N4 <NUM> D3 D2 D5 </NUM> <NUM> D4 D9 D3 </NUM> <NUM> D7 D4 D0 </NUM> <NUM> D9 D8 D6 </NUM> RAISE_OPTIONS_BB COUNT N3 <NUM> D1 D0 D0 </NUM> <NUM> D1 D5 D0 </NUM> <NUM> D2 D0 D0 </NUM> <DECIDE>Correct FOLD
preflop · 54o · pot 2.3 BB · facing 1 BB
pokerese_0020260804_T226_0529230991:H00001:D001:teacher_concise
ACTION FOLD <EOS>ACTION FOLD <EOS>Encoded allowed actions: CALL, FOLD, RAISE. Grammar: valid; action allowed: yes.
Exact held-out input
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET PREFLOP TABLE_SEATS N8 PLAYERS_REMAINING N8 ACTIVE_PLAYERS N4 HAND_NUMBER N1 LEVEL N0 BUTTON_SEAT N1 PERSPECTIVE_SEAT N0 PERSPECTIVE_POS CO PERSPECTIVE_REL_BTN N7 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS CO REL_BTN N7 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D3 D3 D2 D3 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N1 POS BTN REL_BTN N0 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D4 D3 D2 D3 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N2 POS SB REL_BTN N1 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D3 D6 D0 D7 </NUM> WAGER_BB <NUM> D6 D0 </NUM> END_PLAYER PLAYER SEAT N3 POS BB REL_BTN N2 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D2 D7 D2 D3 </NUM> WAGER_BB <NUM> D1 D1 D0 </NUM> END_PLAYER PLAYER SEAT N4 POS UTG REL_BTN N3 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D4 D9 D0 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N5 POS UTG+1 REL_BTN N4 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D1 D5 D7 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N6 POS MP1 REL_BTN N5 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D8 D2 D3 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N7 POS MP2 REL_BTN N6 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D3 D1 D5 D7 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS 54o HOLE CARD RANK 5 SUIT H END_CARD CARD RANK 4 SUIT D END_CARD END_HOLE BOARD_STREET PREFLOP BOARD_COUNT N0 BOARD NONE END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D2 D3 D0 </NUM> HIGHEST_WAGER_BB <NUM> D1 D1 D0 </NUM> ACTOR_WAGER_BB <NUM> D1 D0 </NUM> TO_CALL_BB <NUM> D1 D0 D0 </NUM> MIN_BET_BB <NUM> D0 </NUM> MAX_BET_BB <NUM> D3 D3 D3 D3 </NUM> MIN_RAISE_TO_BB <NUM> D2 D1 D0 </NUM> MAX_RAISE_TO_BB <NUM> D3 D3 D3 D3 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N4 ACT ORDER N1 STREET PREFLOP SEAT N4 POS UTG ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N2 STREET PREFLOP SEAT N5 POS UTG+1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N3 STREET PREFLOP SEAT N6 POS MP1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N4 STREET PREFLOP SEAT N7 POS MP2 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT <LEGAL> LEGAL FOLD TRUE LEGAL CHECK FALSE LEGAL CALL TRUE LEGAL BET FALSE LEGAL RAISE TRUE CALL_AMOUNT_BB <NUM> D1 D0 D0 </NUM> BET_OPTIONS_BB COUNT N0 NONE RAISE_OPTIONS_BB COUNT N3 <NUM> D2 D1 D0 </NUM> <NUM> D2 D6 D0 </NUM> <NUM> D3 D1 D0 </NUM> <DECIDE>Correct RAISE
preflop · QQ · pot 2.3 BB · facing 1 BB
pokerese_0020260804_T226_0529230991:H00002:D001:teacher_concise
ACTION RAISE SIZE_KIND TO SIZE_BB <NUM> D2 D4 D2 </NUM> <EOS>ACTION RAISE SIZE_KIND TO SIZE_BB <NUM> D2 D4 D2 </NUM> <EOS>Encoded allowed actions: CALL, FOLD, RAISE. Grammar: valid; action allowed: yes.
Exact held-out input
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET PREFLOP TABLE_SEATS N8 PLAYERS_REMAINING N8 ACTIVE_PLAYERS N5 HAND_NUMBER N2 LEVEL N0 BUTTON_SEAT N2 PERSPECTIVE_SEAT N0 PERSPECTIVE_POS MP2 PERSPECTIVE_REL_BTN N6 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS MP2 REL_BTN N6 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D3 D3 D1 D3 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N1 POS CO REL_BTN N7 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D5 D8 D1 D8 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N2 POS BTN REL_BTN N0 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D2 D4 D6 D5 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N3 POS SB REL_BTN N1 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D2 D5 D2 D0 </NUM> WAGER_BB <NUM> D6 D0 </NUM> END_PLAYER PLAYER SEAT N4 POS BB REL_BTN N2 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D2 D3 D8 D0 </NUM> WAGER_BB <NUM> D1 D1 D0 </NUM> END_PLAYER PLAYER SEAT N5 POS UTG REL_BTN N3 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D1 D4 D7 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N6 POS UTG+1 REL_BTN N4 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D8 D1 D3 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N7 POS MP1 REL_BTN N5 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D3 D1 D4 D7 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS QQ HOLE CARD RANK Q SUIT S END_CARD CARD RANK Q SUIT C END_CARD END_HOLE BOARD_STREET PREFLOP BOARD_COUNT N0 BOARD NONE END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D2 D3 D0 </NUM> HIGHEST_WAGER_BB <NUM> D1 D1 D0 </NUM> ACTOR_WAGER_BB <NUM> D1 D0 </NUM> TO_CALL_BB <NUM> D1 D0 D0 </NUM> MIN_BET_BB <NUM> D0 </NUM> MAX_BET_BB <NUM> D3 D3 D2 D3 </NUM> MIN_RAISE_TO_BB <NUM> D2 D1 D0 </NUM> MAX_RAISE_TO_BB <NUM> D3 D3 D2 D3 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N3 ACT ORDER N1 STREET PREFLOP SEAT N5 POS UTG ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N2 STREET PREFLOP SEAT N6 POS UTG+1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N3 STREET PREFLOP SEAT N7 POS MP1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT <LEGAL> LEGAL FOLD TRUE LEGAL CHECK FALSE LEGAL CALL TRUE LEGAL BET FALSE LEGAL RAISE TRUE CALL_AMOUNT_BB <NUM> D1 D0 D0 </NUM> BET_OPTIONS_BB COUNT N0 NONE RAISE_OPTIONS_BB COUNT N3 <NUM> D2 D1 D0 </NUM> <NUM> D2 D6 D0 </NUM> <NUM> D3 D1 D0 </NUM> <DECIDE>Wrong action
preflop · AJo · pot 6.94 BB · facing 2.32 BB
pokerese_0020260804_T226_0529230991:H00008:D001:teacher_concise
ACTION FOLD <EOS>ACTION RAISE SIZE_KIND TO SIZE_BB <NUM> D4 </NUM> <EOS>Encoded allowed actions: CALL, FOLD, RAISE. Grammar: valid; action allowed: yes.
Exact held-out input
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET PREFLOP TABLE_SEATS N8 PLAYERS_REMAINING N8 ACTIVE_PLAYERS N5 HAND_NUMBER N8 LEVEL N0 BUTTON_SEAT N0 PERSPECTIVE_SEAT N0 PERSPECTIVE_POS BTN PERSPECTIVE_REL_BTN N0 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS BTN REL_BTN N0 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D4 D1 D9 D3 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N1 POS SB REL_BTN N1 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D6 D0 D5 D9 </NUM> WAGER_BB <NUM> D6 D0 </NUM> END_PLAYER PLAYER SEAT N2 POS BB REL_BTN N2 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D1 D6 D2 D0 </NUM> WAGER_BB <NUM> D1 D1 D0 </NUM> END_PLAYER PLAYER SEAT N3 POS UTG REL_BTN N3 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D1 D5 D9 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N4 POS UTG+1 REL_BTN N4 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D2 D5 D0 D0 </NUM> WAGER_BB <NUM> D2 D4 D2 </NUM> END_PLAYER PLAYER SEAT N5 POS MP1 REL_BTN N5 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D3 D9 D9 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N6 POS MP2 REL_BTN N6 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D5 D0 D5 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N7 POS CO REL_BTN N7 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D2 D7 D0 D5 </NUM> WAGER_BB <NUM> D2 D4 D2 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS AJo HOLE CARD RANK A SUIT C END_CARD CARD RANK J SUIT S END_CARD END_HOLE BOARD_STREET PREFLOP BOARD_COUNT N0 BOARD NONE END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D6 D9 D4 </NUM> HIGHEST_WAGER_BB <NUM> D2 D4 D2 </NUM> ACTOR_WAGER_BB <NUM> D1 D0 </NUM> TO_CALL_BB <NUM> D2 D3 D2 </NUM> MIN_BET_BB <NUM> D0 </NUM> MAX_BET_BB <NUM> D4 D2 D0 D3 </NUM> MIN_RAISE_TO_BB <NUM> D3 D7 D4 </NUM> MAX_RAISE_TO_BB <NUM> D4 D2 D0 D3 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N5 ACT ORDER N1 STREET PREFLOP SEAT N3 POS UTG ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N2 STREET PREFLOP SEAT N4 POS UTG+1 ACTION RAISE ALL_IN FALSE AMOUNT_BB NA TO_BB <NUM> D2 D4 D2 </NUM> END_ACT ACT ORDER N3 STREET PREFLOP SEAT N5 POS MP1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N4 STREET PREFLOP SEAT N6 POS MP2 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N5 STREET PREFLOP SEAT N7 POS CO ACTION CALL ALL_IN FALSE AMOUNT_BB <NUM> D2 D3 D2 </NUM> TO_BB NA END_ACT <LEGAL> LEGAL FOLD TRUE LEGAL CHECK FALSE LEGAL CALL TRUE LEGAL BET FALSE LEGAL RAISE TRUE CALL_AMOUNT_BB <NUM> D2 D3 D2 </NUM> BET_OPTIONS_BB COUNT N0 NONE RAISE_OPTIONS_BB COUNT N3 <NUM> D3 D7 D4 </NUM> <NUM> D4 D4 D0 </NUM> <NUM> D5 D0 D6 </NUM> <DECIDE>Wrong sizing
preflop · QQ · pot 13.22 BB · facing 6.78 BB
pokerese_0020260804_T226_0529230991:H00002:D002:teacher_concise
ACTION RAISE ALL_IN TRUE SIZE_BB <NUM> D3 D3 D2 D3 </NUM> <EOS>ACTION RAISE ALL_IN TRUE SIZE_BB <NUM> D4 D4 D4 D4 </NUM> <EOS>Encoded allowed actions: CALL, FOLD, RAISE. Grammar: valid; action allowed: yes.
Exact held-out input
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET PREFLOP TABLE_SEATS N8 PLAYERS_REMAINING N8 ACTIVE_PLAYERS N2 HAND_NUMBER N2 LEVEL N0 BUTTON_SEAT N2 PERSPECTIVE_SEAT N0 PERSPECTIVE_POS MP2 PERSPECTIVE_REL_BTN N6 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS MP2 REL_BTN N6 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D3 D0 D8 D1 </NUM> WAGER_BB <NUM> D2 D4 D2 </NUM> END_PLAYER PLAYER SEAT N1 POS CO REL_BTN N7 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D5 D8 D1 D8 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N2 POS BTN REL_BTN N0 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D4 D6 D5 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N3 POS SB REL_BTN N1 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D1 D6 D6 D1 </NUM> WAGER_BB <NUM> D9 D2 D0 </NUM> END_PLAYER PLAYER SEAT N4 POS BB REL_BTN N2 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D3 D8 D0 </NUM> WAGER_BB <NUM> D1 D1 D0 </NUM> END_PLAYER PLAYER SEAT N5 POS UTG REL_BTN N3 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D1 D4 D7 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N6 POS UTG+1 REL_BTN N4 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D1 D8 D1 D3 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N7 POS MP1 REL_BTN N5 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D3 D1 D4 D7 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS QQ HOLE CARD RANK Q SUIT S END_CARD CARD RANK Q SUIT C END_CARD END_HOLE BOARD_STREET PREFLOP BOARD_COUNT N0 BOARD NONE END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D1 D3 D2 D2 </NUM> HIGHEST_WAGER_BB <NUM> D9 D2 D0 </NUM> ACTOR_WAGER_BB <NUM> D2 D4 D2 </NUM> TO_CALL_BB <NUM> D6 D7 D8 </NUM> MIN_BET_BB <NUM> D0 </NUM> MAX_BET_BB <NUM> D3 D3 D2 D3 </NUM> MIN_RAISE_TO_BB <NUM> D1 D5 D9 D7 </NUM> MAX_RAISE_TO_BB <NUM> D3 D3 D2 D3 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N8 ACT ORDER N1 STREET PREFLOP SEAT N5 POS UTG ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N2 STREET PREFLOP SEAT N6 POS UTG+1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N3 STREET PREFLOP SEAT N7 POS MP1 ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N4 STREET PREFLOP SEAT N0 POS MP2 ACTION RAISE ALL_IN FALSE AMOUNT_BB NA TO_BB <NUM> D2 D4 D2 </NUM> END_ACT ACT ORDER N5 STREET PREFLOP SEAT N1 POS CO ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N6 STREET PREFLOP SEAT N2 POS BTN ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N7 STREET PREFLOP SEAT N3 POS SB ACTION RAISE ALL_IN FALSE AMOUNT_BB NA TO_BB <NUM> D9 D2 D0 </NUM> END_ACT ACT ORDER N8 STREET PREFLOP SEAT N4 POS BB ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT <LEGAL> LEGAL FOLD TRUE LEGAL CHECK FALSE LEGAL CALL TRUE LEGAL BET FALSE LEGAL RAISE TRUE CALL_AMOUNT_BB <NUM> D6 D7 D8 </NUM> BET_OPTIONS_BB COUNT N0 NONE RAISE_OPTIONS_BB COUNT N3 <NUM> D1 D5 D9 D7 </NUM> <NUM> D1 D9 D3 D6 </NUM> <NUM> D2 D2 D7 D5 </NUM> <DECIDE>Malformed generation · none observed
No such final-checkpoint output occurred in this test pass. The random-start lesson preserves authentic malformed epoch-zero output.
Illegal action
preflop · KJs · pot 11.55 BB · facing 6.24 BB
pokerese_0020260804_T226_0529230991:H00041:D001:teacher_concise
ACTION RAISE <EOS>ACTION RAISE <EOS>Encoded allowed actions: CALL, FOLD. Grammar: valid; action allowed: no.
Exact held-out input
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET PREFLOP TABLE_SEATS N8 PLAYERS_REMAINING N6 ACTIVE_PLAYERS N6 HAND_NUMBER N41 LEVEL N3 BUTTON_SEAT N3 PERSPECTIVE_SEAT N0 PERSPECTIVE_POS HJ PERSPECTIVE_REL_BTN N5 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS HJ REL_BTN N5 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D6 D2 D4 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N1 POS CO REL_BTN N6 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D2 D8 D3 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N2 POS UTG+2 REL_BTN N7 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N3 POS BTN REL_BTN N0 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D1 D3 D6 D3 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N4 POS SB REL_BTN N1 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N5 POS SB REL_BTN N2 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D2 D3 D0 D3 </NUM> WAGER_BB <NUM> D6 D0 </NUM> END_PLAYER PLAYER SEAT N6 POS BB REL_BTN N3 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D1 D4 D2 D2 </NUM> WAGER_BB <NUM> D1 D1 D0 </NUM> END_PLAYER PLAYER SEAT N7 POS UTG REL_BTN N4 STATUS ALL_IN PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D9 D5 D5 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS KJs HOLE CARD RANK K SUIT C END_CARD CARD RANK J SUIT C END_CARD END_HOLE BOARD_STREET PREFLOP BOARD_COUNT N0 BOARD NONE END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D1 D1 D5 D5 </NUM> HIGHEST_WAGER_BB <NUM> D9 D5 D5 </NUM> ACTOR_WAGER_BB <NUM> D1 D0 </NUM> TO_CALL_BB <NUM> D6 D2 D4 </NUM> MIN_BET_BB <NUM> D0 </NUM> MAX_BET_BB <NUM> D6 D3 D4 </NUM> MIN_RAISE_TO_BB <NUM> D1 D7 D9 D9 </NUM> MAX_RAISE_TO_BB <NUM> D6 D3 D4 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N1 ACT ORDER N1 STREET PREFLOP SEAT N7 POS UTG ACTION JAM_LEGACY ALL_IN TRUE AMOUNT_BB NA TO_BB <NUM> D9 D5 D5 </NUM> END_ACT <LEGAL> LEGAL FOLD TRUE LEGAL CHECK FALSE LEGAL CALL TRUE LEGAL BET FALSE LEGAL RAISE FALSE CALL_AMOUNT_BB <NUM> D6 D2 D4 </NUM> BET_OPTIONS_BB COUNT N0 NONE RAISE_OPTIONS_BB COUNT N0 NONE <DECIDE>Strong-hand sanity: AA
preflop · AA · pot 4.28 BB · facing 1.98 BB
pokerese_0020260804_T231_3177978022:H00059:D001:teacher_concise
ACTION RAISE SIZE_KIND TO SIZE_BB <NUM> D9 D2 D4 </NUM> <EOS>ACTION RAISE ALL_IN TRUE SIZE_BB <NUM> D9 D2 D4 </NUM> <EOS>Encoded allowed actions: CALL, FOLD, RAISE. Grammar: valid; action allowed: yes.
Exact held-out input
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET PREFLOP TABLE_SEATS N8 PLAYERS_REMAINING N3 ACTIVE_PLAYERS N2 HAND_NUMBER N59 LEVEL N4 BUTTON_SEAT N3 PERSPECTIVE_SEAT N2 PERSPECTIVE_POS BB PERSPECTIVE_REL_BTN N7 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS BTN REL_BTN N5 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N1 POS SB REL_BTN N6 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N2 POS BB REL_BTN N7 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D3 D1 D3 D4 </NUM> WAGER_BB <NUM> D1 D1 D0 </NUM> END_PLAYER PLAYER SEAT N3 POS BTN REL_BTN N0 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D3 D2 D5 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N4 POS SB REL_BTN N1 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N5 POS BB REL_BTN N2 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N6 POS BTN REL_BTN N3 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N7 POS SB REL_BTN N4 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D8 D7 D9 </NUM> WAGER_BB <NUM> D3 D0 D8 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS AA HOLE CARD RANK A SUIT S END_CARD CARD RANK A SUIT D END_CARD END_HOLE BOARD_STREET PREFLOP BOARD_COUNT N0 BOARD NONE END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D4 D2 D8 </NUM> HIGHEST_WAGER_BB <NUM> D3 D0 D8 </NUM> ACTOR_WAGER_BB <NUM> D1 D1 D0 </NUM> TO_CALL_BB <NUM> D1 D9 D8 </NUM> MIN_BET_BB <NUM> D0 </NUM> MAX_BET_BB <NUM> D3 D2 D4 D4 </NUM> MIN_RAISE_TO_BB <NUM> D5 D0 D6 </NUM> MAX_RAISE_TO_BB <NUM> D3 D2 D4 D4 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N2 ACT ORDER N1 STREET PREFLOP SEAT N3 POS BTN ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N2 STREET PREFLOP SEAT N7 POS SB ACTION RAISE ALL_IN FALSE AMOUNT_BB NA TO_BB <NUM> D3 D0 D8 </NUM> END_ACT <LEGAL> LEGAL FOLD TRUE LEGAL CHECK FALSE LEGAL CALL TRUE LEGAL BET FALSE LEGAL RAISE TRUE CALL_AMOUNT_BB <NUM> D1 D9 D8 </NUM> BET_OPTIONS_BB COUNT N0 NONE RAISE_OPTIONS_BB COUNT N3 <NUM> D5 D0 D6 </NUM> <NUM> D6 D0 D5 </NUM> <NUM> D7 D0 D4 </NUM> <DECIDE>Weak-hand facing pressure: 72o
preflop · 72o · pot 2.3 BB · facing 1 BB
pokerese_0020260804_T227_2778673778:H00021:D001:teacher_concise
ACTION FOLD <EOS>ACTION FOLD <EOS>Encoded allowed actions: CALL, FOLD, RAISE. Grammar: valid; action allowed: yes.
Exact held-out input
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET PREFLOP TABLE_SEATS N8 PLAYERS_REMAINING N8 ACTIVE_PLAYERS N8 HAND_NUMBER N21 LEVEL N1 BUTTON_SEAT N5 PERSPECTIVE_SEAT N0 PERSPECTIVE_POS UTG PERSPECTIVE_REL_BTN N3 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS UTG REL_BTN N3 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D1 D6 D5 D2 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N1 POS UTG+1 REL_BTN N4 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D2 D3 D3 D7 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N2 POS MP1 REL_BTN N5 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D3 D0 D5 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N3 POS MP2 REL_BTN N6 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D4 D0 D0 D1 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N4 POS CO REL_BTN N7 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D5 D5 D7 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N5 POS BTN REL_BTN N0 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D8 D1 D7 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N6 POS SB REL_BTN N1 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D2 D5 D5 D3 </NUM> WAGER_BB <NUM> D6 D0 </NUM> END_PLAYER PLAYER SEAT N7 POS BB REL_BTN N2 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D1 D8 D4 D8 </NUM> WAGER_BB <NUM> D1 D1 D0 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS 72o HOLE CARD RANK 7 SUIT S END_CARD CARD RANK 2 SUIT D END_CARD END_HOLE BOARD_STREET PREFLOP BOARD_COUNT N0 BOARD NONE END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D2 D3 D0 </NUM> HIGHEST_WAGER_BB <NUM> D1 D1 D0 </NUM> ACTOR_WAGER_BB <NUM> D1 D0 </NUM> TO_CALL_BB <NUM> D1 D0 D0 </NUM> MIN_BET_BB <NUM> D0 </NUM> MAX_BET_BB <NUM> D1 D6 D6 D2 </NUM> MIN_RAISE_TO_BB <NUM> D2 D1 D0 </NUM> MAX_RAISE_TO_BB <NUM> D1 D6 D6 D2 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N0 NONE <LEGAL> LEGAL FOLD TRUE LEGAL CHECK FALSE LEGAL CALL TRUE LEGAL BET FALSE LEGAL RAISE TRUE CALL_AMOUNT_BB <NUM> D1 D0 D0 </NUM> BET_OPTIONS_BB COUNT N0 NONE RAISE_OPTIONS_BB COUNT N3 <NUM> D2 D1 D0 </NUM> <NUM> D2 D6 D0 </NUM> <NUM> D3 D1 D0 </NUM> <DECIDE>Largest numeric sizing error
preflop · KJo · pot 4.21 BB · facing 1.21 BB
pokerese_0020260804_T238_3934434686:H00048:D001:teacher_concise
ACTION RAISE SIZE_KIND TO SIZE_BB <NUM> D8 D7 D8 </NUM> <EOS>ACTION RAISE ALL_IN TRUE SIZE_BB <NUM> D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 </NUM> <EOS>Encoded allowed actions: CALL, FOLD, RAISE. Grammar: valid; action allowed: yes.
Exact held-out input
<BOS> <INPUT> <CONTEXT> VARIANT NLHE BETTING_STRUCTURE NO_LIMIT SESSION LAST_TABLE PLAY_MODE PLAY STREET PREFLOP TABLE_SEATS N8 PLAYERS_REMAINING N5 ACTIVE_PLAYERS N2 HAND_NUMBER N48 LEVEL N3 BUTTON_SEAT N4 PERSPECTIVE_SEAT N0 PERSPECTIVE_POS BB PERSPECTIVE_REL_BTN N4 <PLAYERS> PLAYER_COUNT N8 PLAYER SEAT N0 POS BB REL_BTN N4 STATUS ACTIVE PERSPECTIVE TRUE STACK_BB <NUM> D1 D5 D7 D6 </NUM> WAGER_BB <NUM> D1 D1 D0 </NUM> END_PLAYER PLAYER SEAT N1 POS UTG REL_BTN N5 STATUS ACTIVE PERSPECTIVE FALSE STACK_BB <NUM> D1 D2 D2 D0 </NUM> WAGER_BB <NUM> D2 D3 D1 </NUM> END_PLAYER PLAYER SEAT N2 POS UTG REL_BTN N6 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N3 POS CO REL_BTN N7 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D2 D6 D9 D0 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N4 POS BTN REL_BTN N0 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D8 D4 D2 </NUM> WAGER_BB <NUM> D1 D0 </NUM> END_PLAYER PLAYER SEAT N5 POS SB REL_BTN N1 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER PLAYER SEAT N6 POS SB REL_BTN N2 STATUS FOLDED PERSPECTIVE FALSE STACK_BB <NUM> D4 D0 D1 </NUM> WAGER_BB <NUM> D6 D0 </NUM> END_PLAYER PLAYER SEAT N7 POS UTG REL_BTN N3 STATUS BUSTED PERSPECTIVE FALSE STACK_BB <NUM> D0 </NUM> WAGER_BB <NUM> D0 </NUM> END_PLAYER <CARDS> HOLE_COUNT N2 HAND_CLASS KJo HOLE CARD RANK K SUIT H END_CARD CARD RANK J SUIT D END_CARD END_HOLE BOARD_STREET PREFLOP BOARD_COUNT N0 BOARD NONE END_BOARD <BETTING> SB_BB <NUM> D5 D0 </NUM> BB_BB <NUM> D1 D0 D0 </NUM> ANTE_BB <NUM> D1 D0 </NUM> POT_BB <NUM> D4 D2 D1 </NUM> HIGHEST_WAGER_BB <NUM> D2 D3 D1 </NUM> ACTOR_WAGER_BB <NUM> D1 D1 D0 </NUM> TO_CALL_BB <NUM> D1 D2 D1 </NUM> MIN_BET_BB <NUM> D0 </NUM> MAX_BET_BB <NUM> D1 D6 D8 D6 </NUM> MIN_RAISE_TO_BB <NUM> D3 D5 D2 </NUM> MAX_RAISE_TO_BB <NUM> D1 D6 D8 D6 </NUM> CALL_CLOSES_ACTION UNK <HISTORY> ACTION_COUNT N4 ACT ORDER N1 STREET PREFLOP SEAT N1 POS UTG ACTION RAISE ALL_IN FALSE AMOUNT_BB NA TO_BB <NUM> D2 D3 D1 </NUM> END_ACT ACT ORDER N2 STREET PREFLOP SEAT N3 POS CO ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N3 STREET PREFLOP SEAT N4 POS BTN ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT ACT ORDER N4 STREET PREFLOP SEAT N6 POS SB ACTION FOLD ALL_IN FALSE AMOUNT_BB NA TO_BB NA END_ACT <LEGAL> LEGAL FOLD TRUE LEGAL CHECK FALSE LEGAL CALL TRUE LEGAL BET FALSE LEGAL RAISE TRUE CALL_AMOUNT_BB <NUM> D1 D2 D1 </NUM> BET_OPTIONS_BB COUNT N0 NONE RAISE_OPTIONS_BB COUNT N3 <NUM> D3 D5 D2 </NUM> <NUM> D4 D1 D3 </NUM> <NUM> D4 D7 D3 </NUM> <DECIDE>Evaluation identity and reproduction
Checkpoint SHA-256: 596daad2c000c51981a778fba18c6f38457e919bc0e49e8a65eb4f761fbb3864
Test SHA-256: 0e37b37295421829b5b94efc33ce5d4e44bf54f2a5b3425c6ea67a5588f365eb
Run python scripts/evaluate_product.py --output .tmp-tests/evaluation.json after manual model/data provisioning. See docs/product-v1.md. No retraining is involved.