Thank you for your quick reply. I examined further and found this.
import torch
import torch.nn.functional as F
tensor = [
-39.4640, -30.4600, -29.8240, -28.6050, -28.4820, -34.7070, -26.9110,
-28.2490, -32.5890, -27.0400, -34.9490, -1.7063, -36.6630, -46.3450,
-37.5270, -38.0160, -33.5740, -40.9670, -30.6230, -35.1960, -39.3370,
-35.7420, -38.7020, -60.9540, -35.6590, -38.3470, -26.1920, -34.4350,
-27.2520, -43.7620, -34.3750, -44.2680, -29.7320, -36.3130, -31.2850,
-32.4330, -38.2280, -38.1470, -31.9970, -34.7630, -31.4100, -26.1840,
-47.5360, -19.4740, -35.3710, -19.8780, -28.0600, -35.7290, -39.2160,
-33.4030, -31.3240, -0.5209, -27.5570, -23.1630, -33.9700, -44.1090,
-7.2233, -37.1100, -38.3130, -10.4190, -5.7243, -31.1580, -51.2760,
-13.0130, -22.0170, -17.6730, -43.7560, -23.4110, -33.3230, -31.4360,
-46.2880, -28.1670, -25.4950, -34.3870, -31.4010, -32.2750, -27.2390,
-39.0870, -29.7090, -39.4410, -40.9310, -32.0670, -37.1720, -38.8740,
-47.4230, -37.0320, -29.7280, 6.5632, -33.0120, -28.7500, -37.2510,
-46.9050, -25.2030, -39.9600, -29.4190, -28.0210, -32.1230, -23.1150,
-41.5070, 2.2157, -33.7980, -33.1460, -44.1950, -31.1630, -37.2860,
-42.8840, -0.5351, -39.7500, -27.8490, -47.7960, -31.5340, -39.1790,
-37.6900, -33.9880, -37.7890, -34.6530, -42.7190, -53.4900, -32.6800,
-29.5050, -36.9310, -32.2680, -37.3720, -35.4500, -45.3900, -1.6217,
14.6630, -35.6150, -24.4610, -33.8140, -36.1280, -34.7040, -17.1700,
0.3916, -33.1330, -41.6470, -30.9100, -38.7520, -42.8320, -45.4720,
-35.4720, -28.6920, -34.7470, -4.6244, -46.5550, -35.8260, -30.0120,
-27.1230, -41.3560, -44.6070, -29.4610, -39.9710, -35.2720, -37.3260,
-38.0640, -32.6790, -29.2660, -25.4990, -33.5540, -22.8300, -37.6420,
-43.2870, -19.7370, -41.0410, -32.5190, -35.9680, -35.0390, -39.8550,
-28.5200, -33.2970, -3.3740, -34.7050, -31.8580, -39.1770, -52.6580,
-43.4300, -24.9220, -30.2970, -26.0870, -31.1790, -29.3620, -40.6420,
-3.0459, -30.5280, -32.6050, -30.7650, -33.7710, -24.9610, -30.7920,
-33.4430, -40.1660, -45.0060, -38.5810, -40.9300, -26.7960, -32.1680,
-37.3440, -43.3280, -24.4050, -27.9040, -32.3530, -31.2500, -23.1490,
-3.8144, -41.0400, -33.4050, -41.3210, -38.0230, -40.0120, -37.9040,
-31.1950, -38.1710, -26.5500, -17.9750, -25.8590, -37.0900, -29.6660,
-17.0330, -29.1300, -33.1770, -32.3660, -37.6070, -1.7284, -1.6887,
111.6700, -5.1498, -4.6433, -14.5410, -44.0680, -24.2630, 4.9073,
-1.3849, -27.9320, -34.2830, -37.2280
]
tensor = torch.tensor(tensor)
dist = F.softmax(tensor, dim=-1)
print(dist)
print(dist.multinomial(1))
print(dist.multinomial(2))
print(dist.multinomial(3))
When I get multinomial of 3, there is an error
tensor([0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
7.4269e-43, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 1.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00])
tensor([224])
tensor([224, 0])
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-251-36a133b1a74b> in <module>
44 print(dist.multinomial(1))
45 print(dist.multinomial(2))
---> 46 print(dist.multinomial(3))
47
RuntimeError: invalid multinomial distribution (with replacement=False, not enough non-negative category to sample)
I assume it is because the probability is extremely small, but it is not negative. Is this a bug? or how do I avoid this?
Thank you in advance