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 evidence
1 - Situation and Pokerese

Start 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.

Hero hole card 1
Hero hole card 2
Board cards
Board 1
Board 2
Board 3
Legal actions

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>
HAND / CONTEXT

The poker situation given to the model.

<DECIDE>

The point where the model must start producing an answer.

RECORDED TEACHER TARGET

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.

Poker situation

cards, position, stack, board, action context.

Pokerese text

the structured language we created.

Tokens

the individual Pokerese symbols.

Token IDs

the numeric vocabulary entries passed into the model.

Real symbols from this sequence
<BOS> -> 2<INPUT> -> 4STREET -> 1577PREFLOP -> 1540FLOP -> 159PERSPECTIVE_POS -> 1530UTG -> 1604CO -> 140BTN -> 131SB -> 1569BB -> 123CARD -> 138
Token symbols (570)
<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>
Token IDs (570)
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 | 3

Turn 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.

Pokerese symbol
BET
Token ID
125
Embedding
[-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]
Analogy: 3 dimensions
[x, y, z] = [0.12, -0.44, 0.08]
Pokerese: 32 dimensions
[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.

MAN
1
BIT
2
DOG
3
DOG
1
BIT
2
MAN
3

The words are the same. Their positions change the meaning.

Live representation table
EnglishPokereseToken IDEmbeddingPositionCombined representation
street markerSTREET1577
[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]
streetFLOP159
[-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 markerPERSPECTIVE_POS1530
[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 positionCO140
[-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 rank519
[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 suitH162
[-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 rank519
[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 suitD142
[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 labelACTION106
[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 valueBET125
[-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.

Live token
CO
Token ID
140

which symbol this is

Sequence position
29

where it appears here

Token embedding
[32 numbers]
+
Position embedding
[32 numbers]
=
Combined representation
[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_embedding

Later, training can adjust these positional coordinates too.

Normal space
[x, y, z]
Pokerese model space
[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.

Attention shares

Teaching values - not real Pokerese model weights

Step 1

Current token: MAN

HEAD 1
MAN
100%
BIT
blocked
DOG
blocked
?
blocked
HEAD 1 can use: MAN
Existing MAN 32D representation
[32 numbers]
->
Updated MAN 32D representation
[32 numbers]
Step 2

Current token: BIT

HEAD 1
MAN
30%
BIT
70%
DOG
blocked
?
blocked
HEAD 1 can use: MAN + BIT
30% × MAN representation + 70% × BIT representation
Existing BIT 32D representation
[32 numbers]
->
Updated BIT 32D representation
[32 numbers]
Step 3

Current token: DOG

HEAD 1
MAN
20%
BIT
60%
DOG
20%
?
blocked
HEAD 1 can use: MAN + BIT + DOG
20% × MAN + 60% × BIT + 20% × DOG
Existing DOG 32D representation
[32 numbers]
->
Updated DOG 32D representation
[32 numbers]
current token
->
HEAD 1 looks back
->
attention shares
->
combine information
->
updated 32D representation

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.

Query - Current token's comparison vector

Teaching shorthand: What am I looking for?

Key - Comparison vector for this allowed position

Teaching shorthand: How well does this position match the Query?

Value - Information vector for this allowed position

This is what gets mixed if the position receives attention.

A. Current token produces a Query
DOG
->
Query(DOG) = [2, 1, 0]

Simplified teaching numbers - not real Pokerese Q/K values or numerically exact softmax output.

B. Allowed positions provide Keys
MAN -> Key(MAN) = [1, 0, 1]BIT -> Key(BIT) = [2, 1, 1]DOG -> Key(DOG) = [1, 1, 0]
? blocked

The future token does not participate.

C. Compare Query with Keys
Query(DOG) <-> Key(MAN)
score 1
Query(DOG) <-> Key(BIT)
score 3
Query(DOG) <-> Key(DOG)
score 1
comparison scores
->
normalise into attention shares
softmax in the real model
->
20%60%20%

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.

D. Values carry the information

The Keys helped decide the shares. The Values are what gets mixed.

Value determines what information is actually taken from that position.

Value(MAN)
20% x [1, 2, 0]= [0.2, 0.4, 0]
Value(BIT)
60% x [0, 1, 2]= [0, 0.6, 1.2]
Value(DOG)
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 @ v

Now 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.

Existing DOG 32D representation
HEAD 1
8D Query / Key / Value
MAN
20%
BIT
60%
DOG
20%
HEAD 2
8D Query / Key / Value
MAN
70%
BIT
10%
DOG
20%
HEAD 3
8D Query / Key / Value
MAN
10%
BIT
20%
DOG
70%
HEAD 4
8D Query / Key / Value
MAN
33%
BIT
33%
DOG
34%

Illustrative attention patterns - not real Pokerese model values.

Head 1 output + Head 2 output + Head 3 output + Head 4 output
->
concatenate -> output projection -> one 32D representation
Model width
32D
Heads
4
Per head
8D

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.

Head 1
<HISTORY>2.30%
PERSPECTIVE1.13%
D20.95%
Head 2
CALL0.52%
FOLD0.51%
FOLD0.50%
Head 3
FLOP1.40%
FLOP1.25%
FLOP1.00%
Head 4
ANTE_BB1.74%
FLOP1.21%
FLOP1.14%

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.

One token through one block
32D input

DOG representation before the block

LayerNorm

normalise the 32 numbers before attention

4-head attention

positions exchange information

Output projection

attention result is projected back to 32D

Residual add

existing representation + attention result

LayerNorm

normalise the 32 numbers before feed-forward

Feed-forward

32D -> 128D -> GELU -> 32D

Residual add

current representation + feed-forward result

32D output

DOG representation after the block

Block class
TransformerBlock
Norm placement
pre-norm
Feed-forward
32D -> 128D -> 32D
Dropout
none
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.

32D token representation
->
expand to 128D, GELU
->
compress back to 32D
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: none

One 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.

Original 32D representation
TRANSFORMER BLOCK 1
learned weights set 1
Updated 32D representation
TRANSFORMER BLOCK 2
learned weights set 2
Updated again: 32D representation

Same architecture. Different learned weights.

DOG before Block 1
32D representation
DOG after Block 1
32D representation
DOG after Block 2
32D representation
Block 1: what's inside?
LayerNorm
4-head attention
residual
LayerNorm
32 -> 128 -> 32
residual
Block 2: what's inside?
LayerNorm
4-head attention
residual
LayerNorm
32 -> 128 -> 32
residual
One-block model
Input -> Block 1 -> output
Two-block model
Input -> Block 1 -> Block 2 -> output
Source-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 parameters

The 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.

What starts random
token embeddings
position embeddings
Query / Key / Value projections
attention projections
feed-forward weights
Transformer Block 1 parameters
Transformer Block 2 parameters
Same poker situation

Fixed example pokerese_0020260804_T226_0529230991:H00017:D002:teacher_concise. The input has 558 symbols and ends at <DECIDE>.

Source: artifacts/reconstruction/inherited-hero-reconstruction-v1.1-two-block-reference/06_two_block_transformer/initial-snapshot.json
<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>
Recorded target
<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.

Random model attempt
N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131

Decoded 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
Step 1: chose N1131
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
Step 2: chose N1131
N1131
99.153%
N145
0.836%
N415
4.287e-5
N698
2.506e-5
N230
1.109e-5
N766
8.356e-6
N438
5.460e-6
N977
3.935e-6
Step 3: chose N1131
N1131
99.989%
N559
2.979e-5
J2o
2.270e-5
N381
1.850e-5
N485
1.018e-5
N1215
4.629e-6
N145
4.580e-6
N506
3.651e-6
Step 4: chose N1131
N1131
100.000%
N716
6.692e-7
N761
1.942e-7
N135
5.796e-8
N1037
5.766e-8
ACTIVE
3.919e-8
J2o
1.842e-8
N390
1.554e-8
Step 5: chose N1131
N1131
99.983%
N1057
1.631e-4
N127
1.686e-6
N1037
1.375e-6
N656
7.688e-7
Q8s
6.339e-7
N649
2.055e-7
N404
1.656e-7
Step 6: chose N1131
N1131
99.620%
J2o
0.366%
N926
1.394e-4
N867
3.984e-6
N390
6.470e-7
N716
2.768e-7
N1102
2.408e-7
K7o
2.147e-7
Step 7: chose N1131
N1131
100.000%
N390
2.967e-6
ACTIVE
9.102e-8
N506
5.843e-8
J2s
1.364e-8
85s
2.946e-9
N1057
1.988e-9
N127
1.833e-9
Step 8: chose N1131
N1131
99.875%
N183
9.823e-4
N390
2.644e-4
N672
2.238e-6
AQo
7.397e-7
N1135
5.698e-7
N982
3.820e-7
72s
3.438e-7
Step 9: chose N1131
N1131
66.356%
J2o
33.227%
N1215
0.417%
N398
2.440e-7
N506
2.028e-7
N390
1.046e-7
N86
3.592e-8
N624
2.966e-8
Step 10: chose N1131
N1131
100.000%
N390
2.641e-6
N1057
7.626e-8
92s
5.490e-9
N656
1.776e-9
N104
2.356e-10
N1135
1.221e-10
N127
1.133e-10
Step 11: chose N1131
N1131
99.864%
N749
0.136%
N982
5.527e-6
N390
1.155e-6
N380
2.291e-7
N695
1.717e-7
N1123
1.520e-7
N1255
1.518e-7
Step 12: chose N1131
N1131
100.000%
N1252
4.329e-6
N390
7.564e-8
N982
4.584e-8
N716
3.275e-8
N135
2.687e-8
<CARDS>
8.554e-9
BOARD
8.514e-9
See 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.

Layer 1, head 1
query <TARGET> at 558
BOARD_STREET0.4193%
FLOP0.3406%
<NUM>0.3333%
Layer 1, head 2
query <TARGET> at 558
SEAT0.4058%
SEAT0.3941%
TRUE0.3669%
Layer 1, head 3
query <TARGET> at 558
D30.5127%
D90.4826%
ACTION0.4634%
Layer 1, head 4
query <TARGET> at 558
N10.4435%
N10.4343%
N10.4287%
Layer 2, head 1
query <TARGET> at 558
PLAYER_COUNT0.5807%
FOLD0.4656%
</NUM>0.4530%
Layer 2, head 2
query <TARGET> at 558
SUIT0.4223%
POT_BB0.4094%
N30.3894%
Layer 2, head 3
query <TARGET> at 558
FALSE0.4264%
WAGER_BB0.3341%
<NUM>0.3335%
Layer 2, head 4
query <TARGET> at 558
CO0.4292%
STREET0.4208%
STATUS0.4187%

So how do we turn "that was wrong" into numbers the model can learn from?

Turning a wrong prediction into loss

Pokerese input ... <DECIDE>

Target next token
ACTION
What 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.

CandidateProbability
N113192.484%
N1003.032%
N9662.027%
<TARGET>0.772%
N9230.638%
N12110.573%
J2o0.128%
N5716.957e-4
Target tokenACTION3.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.

Target token
ACTION
Random model P(ACTION)
3.467162809027e-13 (3.467162809027e-11%)
One-token loss
28.690270

The 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.

Model's next-token probabilities
+
Target token = ACTION
↓
How much probability did ACTION receive?
↓
LOSS
Simple examples
illustrative
Bad prediction

ACTION probability: 1% → high loss

illustrative
Better prediction

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.690270
PyTorch cross-entropy for this one position is 28.690269; absolute difference 1.135e-7.
illustrative: p = 0.01loss = 4.605170
illustrative: p = 0.80loss = 0.223144

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.

One-number analogy
parameter = 2.0loss = some function of parametergradient = +0.5

Positive 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.

Local-slope question
Learned number
->
current loss
->
change number slightly
->
did loss rise or fall?
->
gradient
Real Pokerese example

This uses the same fixed example, same epoch-0 random-start state, and the same first target token ACTION from the Loss lesson.

Parameter
BET embedding d1

token_embedding.weight[125, 0]

Parameter value
-0.959169328213

current learned number

Gradient
-0.001388640492

local 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.

LOSS
^
output projection
^
Block 2
^
Block 1
^
embeddings / learned parameters

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 / dParameter

It 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 gradient

Positive 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.

Gradient

direction / sensitivity

Learning rate

step-size control

Optimizer

update rule

New parameter

result

What Pokerese actually uses
torch.optim.Adam
lr 0.003
Betas
0.9, 0.999
Epsilon
1e-8
Weight decay
0.0001
Parameter groups
1

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.

BET embedding d1
Before
-0.959169328213
Gradient
-0.001388640492
Optimizer
Adam
After one step
-0.956169366837
Change
+0.002999961376

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.

Backpropagation

computes gradients.

Optimizer

uses gradients to calculate updates.

Parameter update

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.

1. Batch
16 real training examples
2. Forward pass
Transformer processes all token positions
3. Predictions
1,609 vocabulary scores per position
4. Target-only loss
48 scored tokens -> loss 31.484144
5. Backward
Compute gradients
6. Adam
Use gradients to calculate updates
7. Parameters changed
BET embedding d1 changed by +0.002999961376
Batch size
16
Padded length
520
Scored target tokens
48
Batch loss
31.484144
Context versus scored target tokens
<BOS> <INPUT> ... <DECIDE> <TARGET> ACTION ... <EOS>
Context
not scored
<TARGET>
excluded
First scored label
ACTION

In this first real batch, 8,270 real context positions and 2 padding positions are excluded from the loss.

Real first-batch parameter specimen
Parameter
BET embedding d1
Before
-0.959169328213
Batch gradient
-8.454055641778e-4
After Adam step
-0.956169366837
Change
+0.002999961376

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_concise

That 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.

Training set20,779 training examples
↓
Batch 1optimizer step
↓
Batch 2optimizer step
↓
Batch 3optimizer step
↓
...batch after batch
↓
Final batchoptimizer step
↓
EPOCH 1 COMPLETE1,299 steps total
Epoch
1
Training examples
20,779
Batches
1,299
Optimizer steps
1,299
Batch size
16
Tail bucket size
11
Scored target tokens
104,789
Training loss
1.449616

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.

Parameter continuity
start of epoch 1
→
1,299 optimizer steps
→
end of epoch 1 = start of epoch 2

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.

Reshuffling

Pokerese uses the same training examples again, but the batch order changes between epochs.

Epoch 1 ordering seed
20261813
Epoch 2 ordering seed
20262822
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_concise

Every 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.

Learning curve
Epoch 1 to epoch 12
train loss 1.449616 -> 0.234080
E1E4E8E120.231.45
training loss validation loss

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
EpochTrain lossValidation lossElapsedCumulative
11.4496160.6185444.8 min5.4 min
20.5368090.5096809.8 min15.3 min
30.4284900.44709110.0 min25.3 min
40.3754900.4251879.9 min35.2 min
50.3431010.4070399.8 min45.0 min
60.3105740.3291339.9 min54.9 min
70.2883860.32465711.4 min1.10 h
80.2706380.30956011.4 min1.29 h
90.2568370.31856011.4 min1.48 h
100.2473470.28770111.4 min1.68 h
110.2415230.2907836.6 min1.79 h
120.2340800.26360010.2 min1.95 h
The same hand, watched over time

The target stays fixed. The model changes.

<TARGET> ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 </NUM> <EOS>
Epoch 0
malformed
N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131
decoded action: UNKexact match: no
Epoch 1
grammar-valid
ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D2 D3 </NUM> <EOS>
decoded action: BETexact match: no
Epoch 2
grammar-valid
ACTION CHECK <EOS>
decoded action: CHECKexact match: no
Epoch 8
grammar-valid
ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D6 </NUM> <EOS>
decoded action: BETexact match: no
Epoch 10
grammar-valid
ACTION CHECK <EOS>
decoded action: CHECKexact match: no
Epoch 11
grammar-valid
ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D2 D1 D8 </NUM> <EOS>
decoded action: BETexact match: no
Epoch 12
exact target match
ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 </NUM> <EOS>
decoded action: BETexact match: yes
Show every stored epoch output
Epoch 0 - before trainingmalformed / action UNK
N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131 N1131
Epoch 1grammar-valid / action BET
ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D2 D3 </NUM> <EOS>
Epoch 2grammar-valid / action CHECK
ACTION CHECK <EOS>
Epoch 3grammar-valid / action CHECK
ACTION CHECK <EOS>
Epoch 4grammar-valid / action CHECK
ACTION CHECK <EOS>
Epoch 5grammar-valid / action CHECK
ACTION CHECK <EOS>
Epoch 6grammar-valid / action CHECK
ACTION CHECK <EOS>
Epoch 7grammar-valid / action CHECK
ACTION CHECK <EOS>
Epoch 8grammar-valid / action BET
ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D6 </NUM> <EOS>
Epoch 9grammar-valid / action BET
ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 D6 </NUM> <EOS>
Epoch 10grammar-valid / action CHECK
ACTION CHECK <EOS>
Epoch 11grammar-valid / action BET
ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D2 D1 D8 </NUM> <EOS>
Epoch 12grammar-valid / action BET
ACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 </NUM> <EOS>
Training continuity
Epoch 0 parameters
->
epoch 1
->
epoch 2
->
epoch 12

Each epoch begins from the parameters produced by the previous epoch. No resetting.

Best validation epoch
12
Best validation loss
0.2636
Stored total time
1.99 h

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.

Training set
20,779 examples

Used to learn: forward pass, loss, backward, optimizer step, parameters change.

Validation set
2,702 examples

Used to judge: forward pass and validation loss only. No backward, no optimizer step, no parameter update.

Test set
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.

Validation curve
Lower validation loss is better
best epoch 12: 0.2636
E1E4E8E120.231.45

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.

Checkpoint selection

A checkpoint is a saved snapshot of the model state at an epoch. Pokerese chooses the checkpoint with the lowest validation target-token loss.

E1
0.6185
E2
0.5097
E3
0.4471
E4
0.4252
E5
0.4070
E6
0.3291
E7
0.3247
E8
0.3096
E9
0.3186
E10
0.2877
E11
0.2908
E12
0.2636
BEST
Latest checkpoint
epoch 12
Best checkpoint
epoch 12

Latest means most recent. Best means best validation metric. They can differ; in this run, latest equals best.

Illustrative warning
training loss keeps falling
->
validation loss starts rising
->
possible overfitting

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
Mode
model.eval()
Gradient mode
@torch.no_grad()
Batch size
16
Shuffle
no

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 split boundary

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.

Stored query token
<DECIDE>

Position 558 in this recorded sequence.

Stored source weights
NA
position 379 - share 0.5529
NA
position 395 - share 0.0990
NA
position 453 - share 0.0856
NA
position 413 - share 0.0525
NA
position 397 - share 0.0467
CARD
position 248 - share 0.0400

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.

8 · Try the selected checkpoint

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.

9 · Evidence and limits

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.

Free generation · 32 token limit · best epoch 12
MeasureResultCount / denominator
Action agreement87.15%2,334 / 2,678
Concise grammar valid100.00%2,678 / 2,678
EOS completed100.00%2,678 / 2,678
Action allowed98.66%2,642 / 2,678
Exact generated continuation76.36%2,045 / 2,678
Exact numeric size on sized targets46.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.

Recall by teacher action
ActionSupportRecallPrecision
BET13855.07%69.72%
CALL20237.62%75.25%
CHECK24786.64%77.54%
FOLD152393.70%91.24%
RAISE56895.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

TeacherACTION BET SIZE_KIND AMOUNT SIZE_BB <NUM> D1 D8 D9 </NUM> <EOS>
GeneratedACTION 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

TeacherACTION CALL <EOS>
GeneratedACTION 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

TeacherACTION CHECK <EOS>
GeneratedACTION 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

TeacherACTION FOLD <EOS>
GeneratedACTION 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

TeacherACTION RAISE SIZE_KIND TO SIZE_BB <NUM> D2 D4 D2 </NUM> <EOS>
GeneratedACTION 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

TeacherACTION FOLD <EOS>
GeneratedACTION 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

TeacherACTION RAISE ALL_IN TRUE SIZE_BB <NUM> D3 D3 D2 D3 </NUM> <EOS>
GeneratedACTION 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

TeacherACTION RAISE <EOS>
GeneratedACTION 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

TeacherACTION RAISE SIZE_KIND TO SIZE_BB <NUM> D9 D2 D4 </NUM> <EOS>
GeneratedACTION 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

TeacherACTION FOLD <EOS>
GeneratedACTION 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

TeacherACTION RAISE SIZE_KIND TO SIZE_BB <NUM> D8 D7 D8 </NUM> <EOS>
GeneratedACTION 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.