From ebfd32b60d880597970277aa401ab16291b6315a Mon Sep 17 00:00:00 2001 From: Filip Gralinski Date: Wed, 19 May 2021 16:04:21 +0200 Subject: [PATCH] up --- wyk/09_neurozoo.org | 27 +++++++++++++++++++++------ wyk/softmax.drawio | 1 + wyk/softmax.png | Bin 0 -> 16080 bytes 3 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 wyk/softmax.drawio create mode 100644 wyk/softmax.png diff --git a/wyk/09_neurozoo.org b/wyk/09_neurozoo.org index 56669ea..4586151 100644 --- a/wyk/09_neurozoo.org +++ b/wyk/09_neurozoo.org @@ -156,6 +156,9 @@ Definicja w PyTorchu: : tensor([0.1182, 0.0022, 0.0059, 0.8737]) :end: +#+CAPTION: Softmax +[[./softmax.png]] + *** Soft vs hard Dlaczego /softmax/? Czasami używa się funkcji *hardmax*, która np. @@ -333,7 +336,7 @@ Podstawowym zastosowaniem funkcji softmax jest klasyfikacja wieloklasowa, również w wypadku zadań przetwarzania sekwencji, które mogą być interpretowane jako klasyfikacja wieloklasowa: -- przewidywanie kolejnego słowa w modelowaniu języka (klasą jest słowo, zbiór klas to słownik) +- przewidywanie kolejnego słowa w modelowaniu języka (klasą jest słowo, zbiór klas to słownik, np. klasą początku tekstu /Dzisiaj rano kupiłem w piekarni/ może być /bułki/) - przypisywanie etykiet (np. części mowy) słowom. ** LogSoftmax @@ -394,7 +397,7 @@ Wczytujemy zbiór uczący: #+RESULTS: :results: -# Out[23]: +# Out[85]: #+BEGIN_EXAMPLE {'zimowe': 0, 'moto': 1, @@ -480,7 +483,7 @@ Pętla ucząca: #+RESULTS: :results: -# Out[25]: +# Out[86]: :end: Model jest tak prosty, że jego wagi są interpretowalne. @@ -507,10 +510,22 @@ Model jest tak prosty, że jego wagi są interpretowalne. #+RESULTS: :results: -# Out[32]: +# Out[89]: #+BEGIN_EXAMPLE - tensor([-2.3693, -2.3421, -2.4205, -2.4353, -2.1499, 2.5163, -2.4351, -2.4546], - grad_fn=) + Parameter containing: + tensor([[ 7.8818e-04, 1.0930e-03, 5.9632e-04, ..., 8.1697e-04, + 1.2976e-03, -8.4243e-04], + [-1.0164e-03, -8.9416e-04, -1.8650e-03, ..., 6.6075e-04, + -5.4883e-04, -1.1845e-03], + [-3.1395e-04, 1.8564e-03, -7.0267e-04, ..., -4.7028e-04, + 7.0584e-04, 9.8026e-04], + ..., + [ 4.8792e-05, 1.9183e-03, 1.3152e-03, ..., 4.6495e-04, + 9.5338e-04, 1.9107e-03], + [-5.2181e-04, 1.1135e-03, 7.1943e-04, ..., 3.7215e-04, + 1.0002e-03, -1.7985e-03], + [-9.1641e-04, 1.6301e-03, 1.7372e-03, ..., 1.2390e-03, + -9.1001e-04, 1.5711e-03]], requires_grad=True) #+END_EXAMPLE :end: diff --git a/wyk/softmax.drawio b/wyk/softmax.drawio new file mode 100644 index 0000000..e1d038e --- /dev/null +++ b/wyk/softmax.drawio @@ -0,0 +1 @@ +7VrbctowEP0aHuPRxTb2Y8ilmXYyzQztNOmbByug1liMEAHy9ZVr+SKJBOIYTGnykLHW8lo651ja1dLDF9PVJx7NJrcsJkkPgXjVw5c9hEIXyv+ZYZ0bPIxzw5jTODfByjCkz0QZgbIuaEzmWkfBWCLoTDeOWJqSkdBsEedsqXd7ZIn+1lk0JpZhOIoS2/qDxmKSWwPUr+w3hI4nxZuhH+Z3plHRWc1kPolitqyZ8FUPX3DGRH41XV2QJMOuwCV/7vqFu+XAOEnFLg+g65+f+VW8GoQPXyi5dAffxc2Z8vIUJQs1YTVYsS4Q4GyRxiRzAnp4sJxQQYazaJTdXUrKpW0ipolsQXmp3BEuyOrFccJy9lI1hE2J4GvZRT2AgAJMKQZ5qr2s8MeFbVLHvkA6UpyPS98VLPJCIfMGlPoWSsjxLKDklIWOxlxw9ptcsIRxaUlZKnsOHmmSGKYooeNUNkcSIiLtgwxAKkV4rm5MaRxnr9kIv05QGwwgnQG4gQF3AwF7wz+w8D+DjnvCBIRHRkBoEYBPF33cPzL0i72wBj9wgtMlwHWPjQC0fZskaXyexRsZjEk0n9ORzoWcO1/fZyA50p1qP8j2GXCA3y8slyuFY95a11t3hFM5oYyh3LiiIvcI+ki1H4rXyevKV9ZY1xqmp3w2JLZiIYMyOWO24CPyClb5ymBzW+Nu0+Zd2DhJIkGf9HFsIlS94Y5ROcJq5cShJh3s9x1geMmnoB6sB0ymryJ2Vb5cjJww1H2JiI+JsHz9VVk5+XcID7cgvFIlGPTrKnH+Y51gYOgkAM1EgqEpEnBYhbhHuTTtKpTO+A/MdaIp/6HBP/KcMDisBLwPCTSQgOu1JAHX714CviUB4Hh9SwYnEyKaMbrbeYhop0hyw/2PDgk6ZwBtypIAOOGPwDwm6J4C+zgx2z5OlwEzU+2eATtTJauZRcDBz3SNxQL5Nk6lmutAmdF0e0DZmVXK+FTq6zka/Yp65an98YCGceegtZBs9NpLIbvNIIzFF4Om4aOxhpQDPFDsiOzY8c2k1tIH4Pv1/EEaMN5n+oBAjs/WRfFYjqRg2FAoqGuh2GWwf0koHR41FcXCQgFB2PhQMvPmu6D801NPZOaw+5aEXZn7kMTb9453CSIEDjweQdhp8IcgdjiL8tsThPR1RILAdko4/Hr97fb83tLFyWSFEG7Pdg6aFeI2igS1YqOvl5H8oqy0eyGp9o172he+5eve9UPepQClMNgePnZaqYLmEUPTPAOaCcuBw0fcRpmiqmUiqIuw01pmtwmGh+S+GFZ/vs4z8JoHF74eueIDVzdxG7lpqRkvxJpmwMfCtU9Z+q/LEr5DloEhy0MvZW2kPaUsA5lFvXc/PZnFzEyNXNhwu9vf0iWb1a+28+7VT9/x1R8= \ No newline at end of file diff --git a/wyk/softmax.png b/wyk/softmax.png new file mode 100644 index 0000000000000000000000000000000000000000..dad4090ed17eef2915fe31b7fa8e5611400b4ed5 GIT binary patch literal 16080 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 literal 0 HcmV?d00001