Skip to content

Commit 82e1040

Browse files
authored
Char rnn classification tutorial typo correction (#611)
* saving_loading_models.py torchScript ๋ฏธ๋ฒˆ์—ญ๋ถ„ ๋ฒˆ์—ญ
1 parent 01158fa commit 82e1040

2 files changed

Lines changed: 62 additions & 61 deletions

File tree

โ€Žbeginner_source/saving_loading_models.pyโ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
๋ชจ๋ธ ์ €์žฅํ•˜๊ธฐ & ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
44
=========================
55
**Author:** `Matthew Inkawhich <https://github.com/MatthewInkawhich>`_
6-
**๋ฒˆ์—ญ**: `๋ฐ•์ •ํ™˜ <http://github.com/9bow>`_
6+
**๋ฒˆ์—ญ**: `๋ฐ•์ •ํ™˜ <http://github.com/9bow>`_, `๊น€์ œํ•„ <http://github.com/garlicvread>`_
77
88
์ด ๋ฌธ์„œ์—์„œ๋Š” PyTorch ๋ชจ๋ธ์„ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
99
์ด ๋ฌธ์„œ ์ „์ฒด๋ฅผ ๋‹ค ์ฝ๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ, ํ•„์š”ํ•œ ์‚ฌ์šฉ ์˜ˆ์˜ ์ฝ”๋“œ๋งŒ ์ฐธ๊ณ ํ•˜๋Š”
@@ -34,7 +34,7 @@
3434
- `state_dict๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”? <#state-dict>`__
3535
- `์ถ”๋ก (inference)๋ฅผ ์œ„ํ•ด ๋ชจ๋ธ ์ €์žฅํ•˜๊ธฐ & ๋ถˆ๋Ÿฌ์˜ค๊ธฐ <#inference>`__
3636
- `์ผ๋ฐ˜ ์ฒดํฌํฌ์ธํŠธ(checkpoint) ์ €์žฅํ•˜๊ธฐ & ๋ถˆ๋Ÿฌ์˜ค๊ธฐ <#checkpoint>`__
37-
- `์—ฌ๋Ÿฌ๊ฐœ(multiple)์˜ ๋ชจ๋ธ์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ธฐ <#multiple>`__
37+
- `์—ฌ๋Ÿฌ ๊ฐœ(multiple)์˜ ๋ชจ๋ธ์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ธฐ <#multiple>`__
3838
- `๋‹ค๋ฅธ ๋ชจ๋ธ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๋ชจ๋ธ ์‹œ์ž‘ํ•˜๊ธฐ(warmstart) <#warmstart>`__
3939
- `์žฅ์น˜(device)๊ฐ„ ๋ชจ๋ธ ์ €์žฅํ•˜๊ธฐ & ๋ถˆ๋Ÿฌ์˜ค๊ธฐ <#device>`__
4040

โ€Žintermediate_source/char_rnn_classification_tutorial.pyโ€Ž

Lines changed: 60 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33
๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” NLP: ๋ฌธ์ž-๋‹จ์œ„ RNN์œผ๋กœ ์ด๋ฆ„ ๋ถ„๋ฅ˜ํ•˜๊ธฐ
44
********************************************************************************
55
**Author**: `Sean Robertson <https://github.com/spro/practical-pytorch>`_
6-
**๋ฒˆ์—ญ**: `ํ™ฉ์„ฑ์ˆ˜ <https://github.com/adonisues>`_
6+
**๋ฒˆ์—ญ**: `ํ™ฉ์„ฑ์ˆ˜ <https://github.com/adonisues>`_, `๊น€์ œํ•„ <https://github.com/garlicvread>`_
77
88
9-
๋‹จ์–ด๋ฅผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์ดˆ์ ์ธ ๋ฌธ์ž-๋‹จ์œ„ RNN์„ ๊ตฌ์ถ•ํ•˜๊ณ  ํ•™์Šต ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
10-
์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” (์ดํ›„ 2๊ฐœ ํŠœํ† ๋ฆฌ์–ผ๊ณผ ํ•จ๊ป˜) NLP ๋ชจ๋ธ๋ง์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ๋ฅผ
11-
`torchtext` ์˜ ํŽธ๋ฆฌํ•œ ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ "๊ธฐ์ดˆ๋ถ€ํ„ฐ(from scratch)"
12-
๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— NLP ๋ชจ๋ธ๋ง์„ ์œ„ํ•œ ์ „์ฒ˜๋ฆฌ๊ฐ€ ์ €์ˆ˜์ค€์—์„œ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
9+
๋‹จ์–ด๋ฅผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์ดˆ์ ์ธ ๋ฌธ์ž-๋‹จ์œ„ RNN์„ ๊ตฌ์ถ•ํ•˜๊ณ  ํ•™์Šตํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
10+
์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š”(์ดํ›„ 2๊ฐœ ํŠœํ† ๋ฆฌ์–ผ๊ณผ ํ•จ๊ป˜) NLP ๋ชจ๋ธ๋ง์„ ์œ„ํ•ด `torchtext` ์˜
11+
์ˆ˜๋งŽ์€ ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์ฒ˜๋ฆฌํ•˜๋Š”์ง€ "๊ธฐ์ดˆ๋ถ€ํ„ฐ(from scratch)"
12+
๋ณด์—ฌ์ฃผ๋ฏ€๋กœ NLP ๋ชจ๋ธ๋ง์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ๊ฐ€ ์ €์ˆ˜์ค€์—์„œ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
1313
๋ฌธ์ž-๋‹จ์œ„ RNN์€ ๋‹จ์–ด๋ฅผ ๋ฌธ์ž์˜ ์—ฐ์†์œผ๋กœ ์ฝ์–ด ๋“ค์—ฌ์„œ ๊ฐ ๋‹จ๊ณ„์˜ ์˜ˆ์ธก๊ณผ
14-
"์€๋‹‰ ์ƒํƒœ(Hidden State)" ์ถœ๋ ฅํ•˜๊ณ , ๋‹ค์Œ ๋‹จ๊ณ„์— ์ด์ „ ์€๋‹‰ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
15-
๋‹จ์–ด๊ฐ€ ์†ํ•œ ํด๋ž˜์Šค๋กœ ์ถœ๋ ฅ์ด ๋˜๋„๋ก ์ตœ์ข… ์˜ˆ์ธก์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
14+
"์€๋‹‰ ์ƒํƒœ(Hidden State)"๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๋‹ค์Œ ๋‹จ๊ณ„์— ์ด์ „ ๋‹จ๊ณ„์˜ ์€๋‹‰ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
15+
๋‹จ์–ด๊ฐ€ ์†ํ•œ ํด๋ž˜์Šค๋กœ ์ถœ๋ ฅ๋˜๋„๋ก ์ตœ์ข… ์˜ˆ์ธก์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
1616
1717
๊ตฌ์ฒด์ ์œผ๋กœ, 18๊ฐœ ์–ธ์–ด๋กœ ๋œ ์ˆ˜์ฒœ ๊ฐœ์˜ ์„ฑ(ๅง“)์„ ํ›ˆ๋ จ์‹œํ‚ค๊ณ ,
1818
์ฒ ์ž์— ๋”ฐ๋ผ ์ด๋ฆ„์ด ์–ด๋–ค ์–ธ์–ด์ธ์ง€ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค:
@@ -39,7 +39,7 @@
3939
- :doc:`/beginner/pytorch_with_examples` ๋„“๊ณ  ๊นŠ์€ ํ†ต์ฐฐ์„ ์œ„ํ•œ ์ž๋ฃŒ
4040
- :doc:`/beginner/former_torchies_tutorial` ์ด์ „ Lua Torch ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ž๋ฃŒ
4141
42-
RNN๊ณผ ์ž‘๋™ ๋ฐฉ์‹์„ ์•„๋Š” ๊ฒƒ ๋˜ํ•œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค:
42+
RNN๊ณผ ๊ทธ ์ž‘๋™ ๋ฐฉ์‹์„ ์•„๋Š” ๊ฒƒ ๋˜ํ•œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค:
4343
4444
- `The Unreasonable Effectiveness of Recurrent Neural
4545
Networks <https://karpathy.github.io/2015/05/21/rnn-effectiveness/>`__
@@ -52,19 +52,19 @@
5252
==================
5353
5454
.. note::
55-
`์—ฌ๊ธฐ <https://download.pytorch.org/tutorial/data.zip>`__ ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด ๋ฐ›๊ณ ,
55+
`์—ฌ๊ธฐ <https://download.pytorch.org/tutorial/data.zip>`__ ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ณ 
5656
ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์••์ถ•์„ ํ‘ธ์‹ญ์‹œ์˜ค.
5757
5858
``data/names`` ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” "[Language].txt" ๋ผ๋Š” 18 ๊ฐœ์˜ ํ…์ŠคํŠธ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
59-
๊ฐ ํŒŒ์ผ์—๋Š” ํ•œ ์ค„์— ํ•˜๋‚˜์˜ ์ด๋ฆ„์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„ ๋กœ๋งˆ์ž๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค
59+
๊ฐ ํŒŒ์ผ์—๋Š” ํ•œ ์ค„์— ํ•˜๋‚˜์˜ ์ด๋ฆ„์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„ ๋กœ๋งˆ์ž๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
6060
(๊ทธ๋Ÿฌ๋‚˜, ์œ ๋‹ˆ์ฝ”๋“œ์—์„œ ASCII๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•จ).
6161
6262
๊ฐ ์–ธ์–ด ๋ณ„๋กœ ์ด๋ฆ„ ๋ชฉ๋ก ์‚ฌ์ „ ``{language: [names ...]}`` ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
6363
์ผ๋ฐ˜ ๋ณ€์ˆ˜ "category" ์™€ "line" (์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์–ธ์–ด์™€ ์ด๋ฆ„)์€ ์ดํ›„์˜ ํ™•์žฅ์„ฑ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
6464
6565
.. note::
66-
์—ญ์ž ์ฃผ: "line" ์— ์ž…๋ ฅ์„ "category"์— ํด๋ž˜์Šค๋ฅผ ์ ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฌธ์ œ์—๋„ ํ™œ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
67-
์—ฌ๊ธฐ์„œ๋Š” "line"์— ์ด๋ฆ„(ex. Robert )๋ฅผ ์ž…๋ ฅ์œผ๋กœ "category"์— ํด๋ž˜์Šค(ex. english)๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
66+
์—ญ์ž ์ฃผ: "line" ์— ์ž…๋ ฅ์„ "category"์— ํด๋ž˜์Šค๋ฅผ ์ ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฌธ์ œ์—๋„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
67+
์—ฌ๊ธฐ์„œ๋Š” "line"์— ์ด๋ฆ„(ex. Robert)์„ ์ž…๋ ฅ์œผ๋กœ, "category"์— ํด๋ž˜์Šค(ex. english)๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
6868
6969
"""
7070
from __future__ import unicode_literals, print_function, division
@@ -111,7 +111,7 @@ def readLines(filename):
111111

112112
######################################################################
113113
# ์ด์ œ ๊ฐ ``category`` (์–ธ์–ด)๋ฅผ ``line`` (์ด๋ฆ„)์— ๋งคํ•‘ํ•˜๋Š” ์‚ฌ์ „์ธ
114-
# ``category_lines`` ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ฐธ์กฐ ํ•  ์ˆ˜ ์žˆ๋„๋ก
114+
# ``category_lines`` ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก
115115
# ``all_categories`` (์–ธ์–ด ๋ชฉ๋ก)์™€ ``n_categories`` ๋„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.
116116
#
117117

@@ -122,15 +122,15 @@ def readLines(filename):
122122
# ์ด๋ฆ„์„ Tensor๋กœ ๋ณ€๊ฒฝ
123123
# --------------------------
124124
#
125-
# ์ด์ œ ๋ชจ๋“  ์ด๋ฆ„์„ ์ฒด๊ณ„ํ™” ํ–ˆ์œผ๋ฏ€๋กœ, ์ด๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด Tensor๋กœ
126-
# ์ „ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
125+
# ์ด์ œ ๋ชจ๋“  ์ด๋ฆ„์„ ์ฒด๊ณ„ํ™”ํ–ˆ์œผ๋ฏ€๋กœ, ์ด๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด Tensor๋กœ
126+
# ๋ณ€ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
127127
#
128-
# ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด, ํฌ๊ธฐ๊ฐ€ ``<1 x n_letters>`` ์ธ
129-
# "One-Hot ๋ฒกํ„ฐ" ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. One-Hot ๋ฒกํ„ฐ๋Š” ํ˜„์žฌ ๋ฌธ์ž์˜
130-
# ์ฃผ์†Œ์—๋งŒ 1์„ ๊ฐ’์œผ๋กœ ๊ฐ€์ง€๊ณ  ๊ทธ์™ธ์— ๋‚˜๋จธ์ง€๋Š” 0์œผ๋กœ ์ฑ„์›Œ์ง„๋‹ค.
128+
# ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํฌ๊ธฐ๊ฐ€ ``<1 x n_letters>`` ์ธ
129+
# "One-Hot ๋ฒกํ„ฐ"๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. One-Hot ๋ฒกํ„ฐ๋Š” ํ˜„์žฌ ๋ฌธ์ž์˜
130+
# ์ฃผ์†Œ์—๋Š” 1์ด, ๊ทธ ์™ธ ๋‚˜๋จธ์ง€ ์ฃผ์†Œ์—๋Š” 0์ด ์ฑ„์›Œ์ง„ ๋ฒกํ„ฐ์ž…๋‹ˆ๋‹ค.
131131
# ์˜ˆ์‹œ ``"b" = <0 1 0 0 0 ...>`` .
132132
#
133-
# ๋‹จ์–ด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด One-Hot ๋ฒกํ„ฐ๋“ค์„ 2 ์ฐจ์› ํ–‰๋ ฌ
133+
# ๋‹จ์–ด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด One-Hot ๋ฒกํ„ฐ๋“ค์„ 2์ฐจ์› ํ–‰๋ ฌ
134134
# ``<line_length x 1 x n_letters>`` ์— ๊ฒฐํ•ฉ์‹œํ‚ต๋‹ˆ๋‹ค.
135135
#
136136
# ์œ„์—์„œ ๋ณด์ด๋Š” ์ถ”๊ฐ€์ ์ธ 1์ฐจ์›์€ PyTorch์—์„œ ๋ชจ๋“  ๊ฒƒ์ด ๋ฐฐ์น˜(batch)์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ธฐ
@@ -140,9 +140,9 @@ def readLines(filename):
140140
'''
141141
.. NOTE::
142142
์—ญ์ž ์ฃผ: One-Hot ๋ฒกํ„ฐ๋Š” ์–ธ์–ด๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ž์ฃผ ์ด์šฉ๋˜๋ฉฐ,
143-
๋‹จ์–ด,๊ธ€์ž ๋“ฑ์„ ๋ฒกํ„ฐ๋กœ ํ‘œํ˜„ ํ•  ๋•Œ ๋‹จ์–ด,๊ธ€์ž ์‚ฌ์ด์˜ ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ,
143+
๋‹จ์–ด, ๊ธ€์ž ๋“ฑ์„ ๋ฒกํ„ฐ๋กœ ํ‘œํ˜„ํ•  ๋•Œ ๋‹จ์–ด, ๊ธ€์ž ์‚ฌ์ด์˜ ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ,
144144
One-Hot์œผ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ์„œ๋กœ ์ง๊ตํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ํ•™์Šต์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
145-
๋™์ผํ•˜๊ฒŒ ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ์—๋„ One-Hot ๋ฒกํ„ฐ๋ฅผ ํ™œ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
145+
์ด์™€ ๋™์ผํ•˜๊ฒŒ, ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ์—๋„ One-Hot ๋ฒกํ„ฐ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
146146
'''
147147

148148
import torch
@@ -151,7 +151,7 @@ def readLines(filename):
151151
def letterToIndex(letter):
152152
return all_letters.find(letter)
153153

154-
# ๊ฒ€์ฆ์„ ์œ„ํ•ด์„œ ํ•œ๊ฐœ์˜ ๋ฌธ์ž๋ฅผ <1 x n_letters> Tensor๋กœ ๋ณ€ํ™˜
154+
# ๊ฒ€์ฆ์„ ์œ„ํ•ด์„œ ํ•œ ๊ฐœ์˜ ๋ฌธ์ž๋ฅผ <1 x n_letters> Tensor๋กœ ๋ณ€ํ™˜
155155
def letterToTensor(letter):
156156
tensor = torch.zeros(1, n_letters)
157157
tensor[0][letterToIndex(letter)] = 1
@@ -175,17 +175,17 @@ def lineToTensor(line):
175175
# ====================
176176
#
177177
# Autograd ์ „์—, Torch์—์„œ RNN(recurrent neural network) ์ƒ์„ฑ์€
178-
# ์—ฌ๋Ÿฌ ์‹œ๊ฐ„ ๋‹จ๊ณ„ ๊ฑธ์ฒ˜์„œ ๊ณ„์ธต์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณต์ œํ•˜๋Š” ์ž‘์—…์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
178+
# ์—ฌ๋Ÿฌ ์‹œ๊ฐ„ ๋‹จ๊ณ„ ๊ฑธ์ณ์„œ ๊ณ„์ธต์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณต์ œํ•˜๋Š” ์ž‘์—…์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
179179
# ๊ณ„์ธต์€ ์€๋‹‰ ์ƒํƒœ์™€ ๋ณ€ํ™”๋„(Gradient)๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ด์ œ ์ด๊ฒƒ๋“ค์€ ๊ทธ๋ž˜ํ”„ ์ž์ฒด์—์„œ
180180
# ์™„์ „ํžˆ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” feed-forward ๊ณ„์ธต๊ณผ
181-
# ๊ฐ™์€ ๋งค์šฐ "์ˆœ์ˆ˜ํ•œ" ๋ฐฉ๋ฒ•์œผ๋กœ RNN์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
181+
# ๊ฐ™์€ ๋งค์šฐ "์ˆœ์ˆ˜ํ•œ" ๋ฐฉ๋ฒ•์œผ๋กœ RNN์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
182182
#
183-
# ์—ญ์ž ์ฃผ : ์—ฌ๊ธฐ์„œ๋Š” ๊ต์œก๋ชฉ์ ์œผ๋กœ nn.RNN ๋Œ€์‹  ์ง์ ‘ RNN์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
183+
# ์—ญ์ž ์ฃผ : ์—ฌ๊ธฐ์„œ๋Š” ๊ต์œก ๋ชฉ์ ์œผ๋กœ nn.RNN ๋Œ€์‹  ์ง์ ‘ RNN์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
184184
#
185185
# ์ด RNN ๋ชจ๋“ˆ(๋Œ€๋ถ€๋ถ„ `Torch ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ PyTorch ํŠœํ† ๋ฆฌ์–ผ
186186
# <https://tutorials.pytorch.kr/beginner/former_torchies/
187-
# nnft_tutorial.html#example-2-recurrent-net>`__ ์—์„œ ๋ณต์‚ฌํ•จ)
188-
# ์€ ์ž…๋ ฅ ๋ฐ ์€๋‹‰ ์ƒํƒœ๋กœ ์ž‘๋™ํ•˜๋Š” 2๊ฐœ์˜ ์„ ํ˜• ๊ณ„์ธต์ด๋ฉฐ,
187+
# nnft_tutorial.html#example-2-recurrent-net>`__ ์—์„œ ๋ณต์‚ฌํ•จ)์€
188+
# ์ž…๋ ฅ ๋ฐ ์€๋‹‰ ์ƒํƒœ๋กœ ์ž‘๋™ํ•˜๋Š” 2๊ฐœ์˜ ์„ ํ˜• ๊ณ„์ธต์ด๋ฉฐ,
189189
# ์ถœ๋ ฅ ๋‹ค์Œ์— LogSoftmax ๊ณ„์ธต์ด ์žˆ์Šต๋‹ˆ๋‹ค.
190190
#
191191
# .. figure:: https://i.imgur.com/Z2xbySO.png
@@ -221,9 +221,9 @@ def initHidden(self):
221221

222222
######################################################################
223223
# ์ด ๋„คํŠธ์›Œํฌ์˜ ํ•œ ๋‹จ๊ณ„๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ž…๋ ฅ(ํ˜„์žฌ ๋ฌธ์ž Tensor)๊ณผ
224-
# ์ด์ „์˜ ์€๋‹‰ ์ƒํƒœ (์ฒ˜์Œ์—๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™”)๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
225-
# ์ถœ๋ ฅ(๊ฐ ์–ธ์–ด์˜ ํ™•๋ฅ )๊ณผ ๋‹ค์Œ ์€๋‹‰ ์ƒํƒœ (๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์œ„ํ•ด ์œ ์ง€)๋ฅผ
226-
# ๋Œ๋ ค ๋ฐ›์Šต๋‹ˆ๋‹ค.
224+
# ์ด์ „์˜ ์€๋‹‰ ์ƒํƒœ(์ฒ˜์Œ์—๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™”)๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
225+
# ์ถœ๋ ฅ(๊ฐ ์–ธ์–ด์˜ ํ™•๋ฅ )๊ณผ ๋‹ค์Œ ์€๋‹‰ ์ƒํƒœ(๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์œ„ํ•ด ์œ ์ง€)๋ฅผ
226+
# ๋Œ๋ ค๋ฐ›์Šต๋‹ˆ๋‹ค.
227227
#
228228

229229
input = letterToTensor('A')
@@ -236,7 +236,7 @@ def initHidden(self):
236236
# ํšจ์œจ์„ฑ์„ ์œ„ํ•ด์„œ ๋งค ๋‹จ๊ณ„๋งˆ๋‹ค ์ƒˆ๋กœ์šด Tensor๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—
237237
# ``letterToTensor`` ๋Œ€์‹  ``lineToTensor`` ๋ฅผ ์ž˜๋ผ์„œ ์‚ฌ์šฉํ• 
238238
# ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Tensor์˜ ์‚ฌ์ „ ์—ฐ์‚ฐ(pre-computing) ๋ฐฐ์น˜์— ์˜ํ•ด
239-
# ๋”์šฑ ์ตœ์ ํ™” ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
239+
# ๋”์šฑ ์ตœ์ ํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
240240
#
241241

242242
input = lineToTensor('Albert')
@@ -248,7 +248,7 @@ def initHidden(self):
248248

249249
######################################################################
250250
# ๋ณด์‹œ๋‹ค์‹œํ”ผ ์ถœ๋ ฅ์€ ``<1 x n_categories>`` Tensor์ด๊ณ , ๋ชจ๋“  ํ•ญ๋ชฉ์€
251-
# ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์šฐ๋„(likelihood) ์ž…๋‹ˆ๋‹ค (๋” ๋†’์€ ๊ฒƒ์ด ๋” ํ™•๋ฅ  ๋†’์Œ).
251+
# ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์šฐ๋„(likelihood)์ž…๋‹ˆ๋‹ค(๋” ๋†’์€ ๊ฒƒ์ด ๋” ํ™•๋ฅ  ๋†’์Œ).
252252
#
253253

254254

@@ -259,16 +259,17 @@ def initHidden(self):
259259
# ํ•™์Šต ์ค€๋น„
260260
# ----------------------
261261
#
262-
# ํ•™์Šต์œผ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ๋ช‡๋ช‡ ๋„์›€๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
263-
# ์ฒซ์งธ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„๋‚ธ ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์šฐ๋„์ธ ๋„คํŠธ์›Œํฌ ์ถœ๋ ฅ์„ ํ•ด์„ํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
264-
# ๊ฐ€์žฅ ํฐ ๊ฐ’์˜ ์ฃผ์†Œ๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ ``Tensor.topk`` ๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
262+
# ํ•™์Šต์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „, ๋ช‡๋ช‡ ๋„์›€ ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
263+
# ์ฒซ์งธ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„๋‚ธ ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์šฐ๋„์ธ ๋„คํŠธ์›Œํฌ ์ถœ๋ ฅ์„ ํ•ด์„ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
264+
# ๊ฐ€์žฅ ํฐ ๊ฐ’์˜ ์ฃผ์†Œ๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ ``Tensor.topk`` ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
265+
#
265266
# ์—ญ์ž ์ฃผ: ๋„คํŠธ์›Œํฌ ์ถœ๋ ฅ(๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์šฐ๋„)์œผ๋กœ
266-
# ๊ฐ€์žฅ ํ™•๋ฅ ์ด ๋†’์€ ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„(์–ธ์–ด)๊ณผ ์นดํ…Œ๊ณ ๋ฆฌ ๋ฒˆํ˜ธ ๋ฐ˜ํ™˜
267+
# ๊ฐ€์žฅ ํ™•๋ฅ ์ด ๋†’์€ ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„(์–ธ์–ด)๊ณผ ์นดํ…Œ๊ณ ๋ฆฌ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ˜ํ™˜
267268
#
268269

269270
def categoryFromOutput(output):
270-
top_n, top_i = output.topk(1) # ํ…์„œ์˜ ๊ฐ€์žฅ ํฐ ๊ฐ’ ๋ฐ ์ฃผ์†Œ
271-
category_i = top_i[0].item() # ํ…์„œ์—์„œ ์ •์ˆ˜ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ
271+
top_n, top_i = output.topk(1) # ํ…์„œ์˜ ๊ฐ€์žฅ ํฐ ๊ฐ’ ๋ฐ ์ฃผ์†Œ
272+
category_i = top_i[0].item() # ํ…์„œ์—์„œ ์ •์ˆ˜ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ
272273
return all_categories[category_i], category_i
273274

274275
print(categoryFromOutput(output))
@@ -299,7 +300,7 @@ def randomTrainingExample():
299300
# ๋„คํŠธ์›Œํฌ ํ•™์Šต
300301
# --------------------
301302
#
302-
# ์ด์ œ ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ•™์Šตํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์˜ˆ์‹œ(ํ•™์Šต ๋ฐ์ดํ„ฐ)๋“ค์„ ๋ณด์—ฌ์ฃผ๊ณ  ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค.
303+
# ์ด์ œ ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ•™์Šตํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์˜ˆ์‹œ(ํ•™์Šต ๋ฐ์ดํ„ฐ)๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค.
303304
# ๋งŒ์ผ ํ‹€๋ ธ๋‹ค๋ฉด ์•Œ๋ ค ์ค๋‹ˆ๋‹ค.
304305
#
305306
# RNN์˜ ๋งˆ์ง€๋ง‰ ๊ณ„์ธต์ด ``nn.LogSoftmax`` ์ด๋ฏ€๋กœ ์†์‹ค ํ•จ์ˆ˜๋กœ
@@ -313,17 +314,17 @@ def randomTrainingExample():
313314
# ๊ฐ ํ•™์Šต ๋ฃจํ”„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
314315
#
315316
# - ์ž…๋ ฅ๊ณผ ๋ชฉํ‘œ Tensor ์ƒ์„ฑ
316-
# - 0 ๋กœ ์ดˆ๊ธฐํ™”๋œ ์€๋‹‰ ์ƒํƒœ ์ƒ์„ฑ
317-
# - ๊ฐ ๋ฌธ์ž๋ฅผ ์ฝ๊ธฐ
317+
# - 0 ๋กœ ์ดˆ๊ธฐํ™” ๋œ ์€๋‹‰ ์ƒํƒœ ์ƒ์„ฑ
318+
# - ๊ฐ ๋ฌธ์ž ์ฝ๊ธฐ
318319
#
319-
# - ๋‹ค์Œ ๋ฌธ์ž๋ฅผ ์œ„ํ•œ ์€๋‹‰ ์ƒํƒœ ์œ ์ง€
320+
# - ๋‹ค์Œ ๋ฌธ์ž๋ฅผ ์œ„ํ•œ ์€๋‹‰ ์ƒํƒœ ์œ ์ง€
320321
#
321322
# - ๋ชฉํ‘œ์™€ ์ตœ์ข… ์ถœ๋ ฅ ๋น„๊ต
322323
# - ์—ญ์ „ํŒŒ
323324
# - ์ถœ๋ ฅ๊ณผ ์†์‹ค ๋ฐ˜ํ™˜
324325
#
325326

326-
learning_rate = 0.005 # ์ด๊ฒƒ์„ ๋„ˆ๋ฌด ๋†’๊ฒŒ ์„ค์ •ํ•˜๋ฉด ๋ฐœ์‚ฐํ•  ์ˆ˜ ์žˆ๊ณ , ๋„ˆ๋ฌด ๋‚ฎ์œผ๋ฉด ํ•™์Šต์ด ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
327+
learning_rate = 0.005 # ํ•™์Šต๋ฅ ์„ ๋„ˆ๋ฌด ๋†’๊ฒŒ ์„ค์ •ํ•˜๋ฉด ๋ฐœ์‚ฐํ•  ์ˆ˜ ์žˆ๊ณ , ๋„ˆ๋ฌด ๋‚ฎ์œผ๋ฉด ํ•™์Šต์ด ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
327328

328329
def train(category_tensor, line_tensor):
329330
hidden = rnn.initHidden()
@@ -344,8 +345,8 @@ def train(category_tensor, line_tensor):
344345

345346

346347
######################################################################
347-
# ์ด์ œ ์˜ˆ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ``train`` ํ•จ์ˆ˜๊ฐ€ ์ถœ๋ ฅ๊ณผ ์†์‹ค์„
348-
# ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”์ธก์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ณ  ๋„์‹ํ™”๋ฅผ ์œ„ํ•œ ์†์‹ค์„ ์ถ”์  ํ•  ์ˆ˜
348+
# ์ด์ œ ์˜ˆ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ``train`` ํ•จ์ˆ˜๊ฐ€ ์ถœ๋ ฅ๊ณผ ์†์‹ค์„
349+
# ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”์ธก์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ณ  ๋„์‹ํ™”๋ฅผ ์œ„ํ•œ ์†์‹ค์„ ์ถ”์ ํ•  ์ˆ˜
349350
# ์žˆ์Šต๋‹ˆ๋‹ค. 1000๊ฐœ์˜ ์˜ˆ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ``print_every`` ์˜ˆ์ œ๋งŒ
350351
# ์ถœ๋ ฅํ•˜๊ณ , ์†์‹ค์˜ ํ‰๊ท ์„ ์–ป์Šต๋‹ˆ๋‹ค.
351352
#
@@ -394,7 +395,7 @@ def timeSince(since):
394395
# --------------------
395396
#
396397
# ``all_losses`` ๋ฅผ ์ด์šฉํ•œ ์†์‹ค ๋„์‹ํ™”๋Š”
397-
# ๋„คํŠธ์›Œํฌ์˜ ํ•™์Šต์„ ๋ณด์—ฌ์ค€๋‹ค:
398+
# ๋„คํŠธ์›Œํฌ์˜ ํ•™์Šต์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค:
398399
#
399400

400401
import matplotlib.pyplot as plt
@@ -408,8 +409,8 @@ def timeSince(since):
408409
# ๊ฒฐ๊ณผ ํ‰๊ฐ€
409410
# ======================
410411
#
411-
# ๋„คํŠธ์›Œํฌ๊ฐ€ ๋‹ค๋ฅธ ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ ์–ผ๋งˆ๋‚˜ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณด๊ธฐ์œ„ํ•ด
412-
# ๋ชจ๋“  ์‹ค์ œ ์–ธ์–ด(ํ–‰)๊ฐ€ ๋„คํŠธ์›Œํฌ์—์„œ ์–ด๋–ค ์–ธ์–ด๋กœ ์ถ”์ธก(์—ด)๋˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”
412+
# ๋„คํŠธ์›Œํฌ๊ฐ€ ๋‹ค๋ฅธ ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ ์–ผ๋งˆ๋‚˜ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณด๊ธฐ ์œ„ํ•ด
413+
# ๋ชจ๋“  ์‹ค์ œ ์–ธ์–ด(ํ–‰)๊ฐ€ ๋„คํŠธ์›Œํฌ์—์„œ ์–ด๋–ค ์–ธ์–ด๋กœ ์ถ”์ธก(์—ด)๋˜๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š”
413414
# ํ˜ผ๋ž€ ํ–‰๋ ฌ(confusion matrix)์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํ˜ผ๋ž€ ํ–‰๋ ฌ์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด
414415
# ``evaluate()`` ๋กœ ๋งŽ์€ ์ˆ˜์˜ ์ƒ˜ํ”Œ์„ ๋„คํŠธ์›Œํฌ์— ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
415416
# ``evaluate()`` ์€ ``train ()`` ๊ณผ ์—ญ์ „ํŒŒ๋ฅผ ๋นผ๋ฉด ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
@@ -428,7 +429,7 @@ def evaluate(line_tensor):
428429

429430
return output
430431

431-
# ์˜ˆ์‹œ๋“ค ์ค‘์— ์–ด๋–ค ๊ฒƒ์ด ์ •ํ™•ํ•˜๊ฒŒ ์˜ˆ์ธก๋˜์—ˆ๋Š”์ง€ ๊ธฐ๋ก
432+
# ์˜ˆ์‹œ ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ์ •ํ™•ํžˆ ์˜ˆ์ธก๋˜์—ˆ๋Š”์ง€ ๊ธฐ๋ก
432433
for i in range(n_confusion):
433434
category, line, category_tensor, line_tensor = randomTrainingExample()
434435
output = evaluate(line_tensor)
@@ -459,10 +460,10 @@ def evaluate(line_tensor):
459460

460461

461462
######################################################################
462-
# ์ฃผ์ถ•์—์„œ ๋ฒ—์–ด๋‚œ ๋ฐ์€ ์ ์„ ์„ ํƒํ•˜์—ฌ ์ž˜๋ชป ์ถ”์ธกํ•œ ์–ธ์–ด๋ฅผ ํ‘œ์‹œ
463-
# ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•œ๊ตญ์–ด๋Š” ์ค‘๊ตญ์–ด๋กœ ์ดํƒˆ๋ฆฌ์•„์–ด๋กœ ์ŠคํŽ˜์ธ์–ด๋กœ.
464-
# ๊ทธ๋ฆฌ์Šค์–ด๋Š” ๋งค์šฐ ์ž˜๋˜๋Š” ๊ฒƒ์œผ๋กœ ์˜์–ด๋Š” ๋งค์šฐ ๋‚˜์œ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.
465-
# (๋‹ค๋ฅธ ์–ธ์–ด๋“ค๊ณผ ์ค‘์ฒฉ ๋•Œ๋ฌธ์œผ๋กœ ์ถ”์ •)
463+
# ์ฃผ์ถ•์—์„œ ๋ฒ—์–ด๋‚œ ๋ฐ์€ ์ ์„ ์„ ํƒํ•˜์—ฌ ์ž˜๋ชป ์ถ”์ธกํ•œ ์–ธ์–ด๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
464+
# ์˜ˆ๋ฅผ ๋“ค์–ด ํ•œ๊ตญ์–ด๋Š” ์ค‘๊ตญ์–ด๋กœ ์ดํƒˆ๋ฆฌ์•„์–ด๋กœ ์ŠคํŽ˜์ธ์–ด๋กœ.
465+
# ๊ทธ๋ฆฌ์Šค์–ด๋Š” ๋งค์šฐ ์ž˜๋˜๋Š” ๊ฒƒ์œผ๋กœ ์˜์–ด๋Š” ๋งค์šฐ ๋‚˜์œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.
466+
# (๋‹ค๋ฅธ ์–ธ์–ด๋“ค๊ณผ์˜ ์ค‘์ฒฉ ๋•Œ๋ฌธ์œผ๋กœ ์ถ”์ •)
466467
#
467468

468469

@@ -494,12 +495,12 @@ def predict(input_line, n_predictions=3):
494495
######################################################################
495496
# `์‹ค์šฉ PyTorch ์ €์žฅ์†Œ
496497
# <https://github.com/spro/practical-pytorch/tree/master/char-rnn-classification>`__
497-
# ์˜ ์ตœ์ข… ๋ฒ„์ „ ์Šคํฌ๋ฆฝํŠธ๋Š” ์œ„ ์ฝ”๋“œ๋ฅผ ๋ช‡๊ฐœ์˜ ํŒŒ์ผ๋กœ ๋ถ„ํ• ํ–ˆ์Šต๋‹ˆ๋‹ค.:
498+
# ์˜ ์ตœ์ข… ๋ฒ„์ „ ์Šคํฌ๋ฆฝํŠธ๋Š” ์œ„ ์ฝ”๋“œ๋ฅผ ๋ช‡ ๊ฐœ์˜ ํŒŒ์ผ๋กœ ๋ถ„ํ• ํ–ˆ์Šต๋‹ˆ๋‹ค.:
498499
#
499500
# - ``data.py`` (ํŒŒ์ผ ์ฝ๊ธฐ)
500501
# - ``model.py`` (RNN ์ •์˜)
501502
# - ``train.py`` (ํ•™์Šต ์‹คํ–‰)
502-
# - ``predict.py`` (์ปค๋ฉ˜๋“œ ๋ผ์ธ ์ธ์ž๋กœ ``predict()`` ์‹คํ–‰)
503+
# - ``predict.py`` (์ปค๋งจ๋“œ ๋ผ์ธ ์ธ์ž๋กœ ``predict()`` ์‹คํ–‰)
503504
# - ``server.py`` (bottle.py๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JSON API๋กœ ์˜ˆ์ธก ์ œ๊ณต)
504505
#
505506
# ํ•™์Šต๊ณผ ๋„คํŠธ์›Œํฌ ์ €์žฅ์„ ์œ„ํ•ด ``train.py`` ์‹คํ–‰.
@@ -522,7 +523,7 @@ def predict(input_line, n_predictions=3):
522523
# ์—ฐ์Šต
523524
# =========
524525
#
525-
# - "line -> category" ์˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์œผ๋กœ ์‹œ๋„ํ•ด๋ณด์‹ญ์‹œ์˜ค, ์˜ˆ๋ฅผ ๋“ค์–ด:
526+
# - "line -> category" ์˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์œผ๋กœ ์‹œ๋„ํ•ด ๋ณด์‹ญ์‹œ์˜ค, ์˜ˆ๋ฅผ ๋“ค์–ด:
526527
#
527528
# - ๋‹จ์–ด -> ์–ธ์–ด
528529
# - ์ด๋ฆ„ -> ์„ฑ๋ณ„
@@ -531,7 +532,7 @@ def predict(input_line, n_predictions=3):
531532
#
532533
# - ๋” ํฌ๊ณ  ๋” ๋‚˜์€ ๋ชจ์–‘์˜ ๋„คํŠธ์›Œํฌ๋กœ ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ์‹ญ์‹œ์˜ค.
533534
#
534-
# - ๋”๋งŽ์€ ์„ ํ˜• ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•ด ๋ณด์‹ญ์‹œ์˜ค
535-
# - ``nn.LSTM`` ๊ณผ ``nn.GRU`` ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•ด ๋ณด์‹ญ์‹œ์˜ค
536-
# - ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋Ÿฐ RNN์„ ์ƒ์œ„ ์ˆ˜์ค€ ๋„คํŠธ์›Œํฌ๋กœ ๊ฒฐํ•ฉํ•ด ๋ณด์‹ญ์‹œ์˜ค
535+
# - ๋” ๋งŽ์€ ์„ ํ˜• ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•ด ๋ณด์‹ญ์‹œ์˜ค.
536+
# - ``nn.LSTM`` ๊ณผ ``nn.GRU`` ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•ด ๋ณด์‹ญ์‹œ์˜ค.
537+
# - ์œ„์™€ ๊ฐ™์€ RNN ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ƒ์œ„ ์ˆ˜์ค€ ๋„คํŠธ์›Œํฌ๋กœ ๊ฒฐํ•ฉํ•ด ๋ณด์‹ญ์‹œ์˜ค.
537538
#

0 commit comments

Comments
ย (0)