├── 2.-1 ├── README.md ├── 2.6.-ai-3 │ ├── README.md │ ├── 2.6.1..md │ ├── 2.6.3.-ai.md │ └── 2.6.2..md ├── 1.6. │ ├── untitled-11.md │ ├── untitled-16.md │ ├── untitled-12.md │ ├── untitled-13.md │ ├── untitled-10.md │ ├── untitled-9.md │ ├── untitled-17.md │ ├── untitled-15.md │ ├── untitled-8.md │ ├── untitled-7.md │ ├── untitled-14.md │ ├── README.md │ └── 1.1.1.-jupyter-notebook.md ├── 1. │ ├── README.md │ ├── 1.2.-python.md │ ├── 1.1.2.-open-source │ │ ├── 1.2.-python.md │ │ └── README.md │ ├── 2.1.6..md │ ├── 1.1.3.-github.md │ ├── 1.1.2.-open-source.md │ ├── 1.1.4.-wiki.md │ └── 1.1.1.-cpu-gpu.md ├── 2.4.-pytorch.md ├── 1.5.-keras.md └── 1.4.-tensorflow.md ├── 4.-and ├── 5.6..md ├── 5.2. │ ├── README.md │ ├── 5.2.3..md │ └── 5.2.1..md ├── README.md ├── 5.1. │ ├── 5.1.2.-classification.md │ ├── README.md │ └── 5.1.3.-mnist-dataset.md ├── 5.5.-keras │ └── README.md └── 5.3.-mnist-dataset │ └── README.md ├── _config.yml ├── 3. ├── 3.5. │ ├── README.md │ ├── 3.5.1..md │ └── 3.5.2..md ├── 3.3. │ ├── README.md │ ├── 3.3.6..md │ ├── 3.3.4.-reserved-words.md │ ├── 3.3.7..md │ ├── 3.3.8.-variables.md │ ├── 3.3.3.-identifiers.md │ ├── 3.3.2.-import.md │ └── 3.3.1..md ├── 3.4. │ └── README.md ├── 3.10.-sequence │ ├── README.md │ └── 3.10.2.-tuple.md ├── 3.7.-modules │ ├── 3.7.4.-packages.md │ ├── 3.7.1..md │ ├── 3.7.2.-namespace-scoping.md │ └── README.md ├── 3.9.-strings │ ├── 3.9.2..md │ ├── 3.9.1.-unicode.md │ ├── README.md │ └── 3.9.4..md ├── README.md ├── 3.6. │ └── README.md ├── 3.2..md └── 1.2-python.md ├── .gitbook └── assets │ ├── 1-1.jpg │ ├── 114.png │ ├── 121.png │ ├── 130.png │ ├── 15.png │ ├── 161.png │ ├── 170.jpg │ ├── 171.png │ ├── 172.png │ ├── 173.png │ ├── 180.png │ ├── 260.png │ ├── 2_3.png │ ├── 2_5.png │ ├── 1150.png │ ├── 1612.png │ ├── 1641.png │ ├── 2101.png │ ├── 2102.jpg │ ├── 2111.png │ ├── 21110.png │ ├── 21111.png │ ├── 2112.png │ ├── 2113.png │ ├── 2114.png │ ├── 2115.png │ ├── 2116.png │ ├── 2117.png │ ├── 2118.png │ ├── 2119.png │ ├── 212-1.png │ ├── 212-2.png │ ├── 212-3.png │ ├── 212-4.png │ ├── 213-1.png │ ├── 213-2.png │ ├── 214-1.png │ ├── 214-2.png │ ├── 2140.png │ ├── 2150.png │ ├── 21510.png │ ├── 21511.png │ ├── 21512.png │ ├── 21513.png │ ├── 21514.png │ ├── 21515.png │ ├── 21516.png │ ├── 21517.png │ ├── 21518.png │ ├── 21521.png │ ├── 21527.png │ ├── 21531.png │ ├── 2210.png │ ├── 2211.png │ ├── 22110.png │ ├── 22111.png │ ├── 2212.png │ ├── 2213.png │ ├── 2214.png │ ├── 2215.png │ ├── 2216.png │ ├── 2217.png │ ├── 2219.png │ ├── 2220.png │ ├── 2221.png │ ├── 2222.png │ ├── 2240.png │ ├── 2241.png │ ├── 2242.png │ ├── 2243.png │ ├── 2244.png │ ├── 2250.png │ ├── 2251.png │ ├── 22510.png │ ├── 22511.png │ ├── 22512.png │ ├── 22513.png │ ├── 22514.png │ ├── 2252.png │ ├── 2256.png │ ├── 2257.png │ ├── 2258.png │ ├── 2259.png │ ├── 31201.jpg │ ├── 31401.png │ ├── 31402.png │ ├── 31403.png │ ├── 31501.png │ ├── 31521.png │ ├── 31522.png │ ├── 31531.png │ ├── 31532.png │ ├── 31533.png │ ├── 31534.png │ ├── 31535.png │ ├── 3311.png │ ├── 3312.png │ ├── 3313.png │ ├── 3314.png │ ├── 3315.png │ ├── 3321.png │ ├── 3510.png │ ├── 3511.png │ ├── 3512.png │ ├── 3513.png │ ├── 3520.png │ ├── 3521.png │ ├── 3523.png │ ├── 3524.png │ ├── 3525.png │ ├── 3750.png │ ├── 3820.png │ ├── 3841.png │ ├── 4410.png │ ├── 44231.png │ ├── 44232.png │ ├── 51101.png │ ├── 51102.png │ ├── 51103.png │ ├── 51104.png │ ├── 51105.png │ ├── 51106.png │ ├── 51107.png │ ├── 51108.png │ ├── 51109.png │ ├── 51110.png │ ├── 51111.png │ ├── 51301.png │ ├── 51302.png │ ├── 51303.png │ ├── 51304.png │ ├── 52101.png │ ├── 52102.png │ ├── 52103.png │ ├── 52201.png │ ├── 52202.png │ ├── 52211.png │ ├── 52212.png │ ├── 52213.png │ ├── 52301.png │ ├── 52302.png │ ├── 53211.png │ ├── 53301.jpg │ ├── 53302.jpg │ ├── 53303.jpg │ ├── 53304.jpg │ ├── 53401.gif │ ├── 53402.png │ ├── 53406.png │ ├── 53407.gif │ ├── 53408.png │ ├── 53501.png │ ├── 53511.jpg │ ├── 53512.png │ ├── 53531.png │ ├── 53532.png │ ├── 53533.png │ ├── 53534.png │ ├── 53535.png │ ├── 53536.png │ ├── 53537.png │ ├── 53538.png │ ├── 53539.png │ ├── 54001.jpg │ ├── 54002.png │ ├── 54101.png │ ├── 54102.png │ ├── 54103.png │ ├── 54104.png │ ├── 54105.png │ ├── 54201.png │ ├── 54202.jpg │ ├── 54202.png │ ├── 54203.png │ ├── 54301.jpg │ ├── 54302.png │ ├── 55100.png │ ├── 55101.png │ ├── 55102.png │ ├── 55103.png │ ├── 55104.png │ ├── 61101.png │ ├── 61102.png │ ├── 61103.png │ ├── 61104.png │ ├── 61201.png │ ├── 61202.png │ ├── 61301.png │ ├── 6201.png │ ├── 6202.png │ ├── 62201.png │ ├── 63101.png │ ├── 63102.png │ ├── 63103.png │ ├── image.png │ ├── xor2.gif │ ├── 2111-1.png │ ├── 2111-2.png │ ├── 2111-3.png │ ├── 2111-4.png │ ├── 2111-5.png │ ├── 2111-6.png │ ├── 2111-7.png │ ├── 2111-8.png │ ├── 2150-1.png │ ├── 2150-2.png │ ├── 215310.png │ ├── 215311.png │ ├── 2220 (1).png │ ├── 21110 (1).png │ ├── 21111 (1).png │ ├── 213-2 (1).png │ ├── 52301 (1).png │ ├── 54101 (1).png │ ├── 54201 (1).png │ ├── 54202 (1).png │ ├── 54203 (1).png │ ├── 54203 (2).png │ ├── 54203 (3).png │ ├── 62201 (1).png │ ├── image (1).png │ ├── image (10).png │ ├── image (11).png │ ├── image (2).png │ ├── image (3).png │ ├── image (4).png │ ├── image (5).png │ ├── image (6).png │ ├── image (7).png │ ├── image (8).png │ ├── image (9).png │ ├── cpu-and-gpu.jpg │ └── 186c0b1c4a4a3e94ad.gif ├── 2. ├── 2.1. │ ├── README.md │ ├── 2.1.3..md │ ├── 2.1.5. │ │ ├── README.md │ │ ├── 2.md │ │ ├── 3.md │ │ └── 1.md │ ├── 2.1.1. │ │ ├── 1.md │ │ ├── 3-nvidia-gpu.md │ │ └── README.md │ ├── 2.1.4..md │ ├── 2.1.4.-jupyter-notebook.md │ └── 2.1.2..md ├── 2.2. │ ├── 2.2.3.-1.md │ ├── README.md │ ├── 2.2.2..md │ ├── 2.2.5.-pycharm │ │ ├── README.md │ │ └── 1.md │ └── 2.2.4..md └── README.md ├── undefined-2.md ├── 4.-1.md ├── 4..md ├── 6.-2.x.md ├── 1.1.-artificial-intelligence ├── 1.4.-greater-than-greater-than.md ├── 1.7. │ ├── 1.7.2.-unsupervised-learning.md │ ├── 1.7.1.-supervised-learning.md │ ├── 1.7.3.-reinforcement-learning.md │ └── README.md ├── 1.5..md ├── 1.8..md ├── 1.1.2.-4.md ├── 1.1.1.md ├── 1.3..md └── 1.7.-ann.md ├── 1. ├── 1.6. │ ├── untitled-11.md │ ├── untitled-16.md │ ├── untitled-12.md │ ├── untitled-13.md │ ├── untitled-10.md │ ├── untitled-9.md │ ├── untitled-17.md │ ├── untitled-15.md │ ├── untitled-8.md │ ├── untitled-7.md │ ├── untitled-14.md │ ├── README.md │ └── 1.1.1.-jupyter-notebook.md ├── 1.7. │ ├── 1.7.2.-unsupervised-learning.md │ ├── 1.7.1.-supervised-learning.md │ ├── 1.7.3.-reinforcement-learning.md │ └── README.md ├── README.md ├── 1.1.-artificial-intelligence │ ├── 1.1.2.-4.md │ ├── 1.1.1.md │ ├── 1.1.3.-github.md │ ├── 1.1.1.-cpu-gpu.md │ ├── 1.1.2.-open-source.md │ └── 1.1.4.-wiki.md ├── 1.2.-python.md ├── 1.5.-keras.md ├── 1.4.-tensorflow.md └── 1.2-python.md ├── 4.-numpy-and-scipy ├── README.md ├── 4.4-pandas │ └── README.md ├── 4.1-numpy │ ├── 3.13.3.-shape-manipulation.md │ ├── 4.1.2.-indexing-slicing-iterating.md │ ├── 4.1.1.-basic-operations.md │ └── README.md └── 4.3-scipy │ ├── README.md │ └── 4.3.1.-interpolation.md ├── 5. ├── 6.3.-dialogflow.md ├── 6.1. │ ├── README.md │ └── 6.1.2..md ├── README.md └── 6.2.-chatter │ └── README.md ├── 7..md ├── README.md └── index.md /2.-1/README.md: -------------------------------------------------------------------------------- 1 | # 2. 기본 상식 2 | 3 | -------------------------------------------------------------------------------- /4.-and/5.6..md: -------------------------------------------------------------------------------- 1 | # 5.6. 웹 크롤링 2 | 3 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-dinky -------------------------------------------------------------------------------- /3./3.5./README.md: -------------------------------------------------------------------------------- 1 | # 3.5. 조건문과 반복문 2 | 3 | -------------------------------------------------------------------------------- /.gitbook/assets/1-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/1-1.jpg -------------------------------------------------------------------------------- /.gitbook/assets/114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/114.png -------------------------------------------------------------------------------- /.gitbook/assets/121.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/121.png -------------------------------------------------------------------------------- /.gitbook/assets/130.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/130.png -------------------------------------------------------------------------------- /.gitbook/assets/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/15.png -------------------------------------------------------------------------------- /.gitbook/assets/161.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/161.png -------------------------------------------------------------------------------- /.gitbook/assets/170.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/170.jpg -------------------------------------------------------------------------------- /.gitbook/assets/171.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/171.png -------------------------------------------------------------------------------- /.gitbook/assets/172.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/172.png -------------------------------------------------------------------------------- /.gitbook/assets/173.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/173.png -------------------------------------------------------------------------------- /.gitbook/assets/180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/180.png -------------------------------------------------------------------------------- /.gitbook/assets/260.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/260.png -------------------------------------------------------------------------------- /.gitbook/assets/2_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2_3.png -------------------------------------------------------------------------------- /.gitbook/assets/2_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2_5.png -------------------------------------------------------------------------------- /.gitbook/assets/1150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/1150.png -------------------------------------------------------------------------------- /.gitbook/assets/1612.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/1612.png -------------------------------------------------------------------------------- /.gitbook/assets/1641.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/1641.png -------------------------------------------------------------------------------- /.gitbook/assets/2101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2101.png -------------------------------------------------------------------------------- /.gitbook/assets/2102.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2102.jpg -------------------------------------------------------------------------------- /.gitbook/assets/2111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2111.png -------------------------------------------------------------------------------- /.gitbook/assets/21110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21110.png -------------------------------------------------------------------------------- /.gitbook/assets/21111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21111.png -------------------------------------------------------------------------------- /.gitbook/assets/2112.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2112.png -------------------------------------------------------------------------------- /.gitbook/assets/2113.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2113.png -------------------------------------------------------------------------------- /.gitbook/assets/2114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2114.png -------------------------------------------------------------------------------- /.gitbook/assets/2115.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2115.png -------------------------------------------------------------------------------- /.gitbook/assets/2116.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2116.png -------------------------------------------------------------------------------- /.gitbook/assets/2117.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2117.png -------------------------------------------------------------------------------- /.gitbook/assets/2118.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2118.png -------------------------------------------------------------------------------- /.gitbook/assets/2119.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2119.png -------------------------------------------------------------------------------- /.gitbook/assets/212-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/212-1.png -------------------------------------------------------------------------------- /.gitbook/assets/212-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/212-2.png -------------------------------------------------------------------------------- /.gitbook/assets/212-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/212-3.png -------------------------------------------------------------------------------- /.gitbook/assets/212-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/212-4.png -------------------------------------------------------------------------------- /.gitbook/assets/213-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/213-1.png -------------------------------------------------------------------------------- /.gitbook/assets/213-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/213-2.png -------------------------------------------------------------------------------- /.gitbook/assets/214-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/214-1.png -------------------------------------------------------------------------------- /.gitbook/assets/214-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/214-2.png -------------------------------------------------------------------------------- /.gitbook/assets/2140.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2140.png -------------------------------------------------------------------------------- /.gitbook/assets/2150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2150.png -------------------------------------------------------------------------------- /.gitbook/assets/21510.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21510.png -------------------------------------------------------------------------------- /.gitbook/assets/21511.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21511.png -------------------------------------------------------------------------------- /.gitbook/assets/21512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21512.png -------------------------------------------------------------------------------- /.gitbook/assets/21513.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21513.png -------------------------------------------------------------------------------- /.gitbook/assets/21514.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21514.png -------------------------------------------------------------------------------- /.gitbook/assets/21515.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21515.png -------------------------------------------------------------------------------- /.gitbook/assets/21516.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21516.png -------------------------------------------------------------------------------- /.gitbook/assets/21517.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21517.png -------------------------------------------------------------------------------- /.gitbook/assets/21518.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21518.png -------------------------------------------------------------------------------- /.gitbook/assets/21521.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21521.png -------------------------------------------------------------------------------- /.gitbook/assets/21527.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21527.png -------------------------------------------------------------------------------- /.gitbook/assets/21531.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21531.png -------------------------------------------------------------------------------- /.gitbook/assets/2210.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2210.png -------------------------------------------------------------------------------- /.gitbook/assets/2211.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2211.png -------------------------------------------------------------------------------- /.gitbook/assets/22110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/22110.png -------------------------------------------------------------------------------- /.gitbook/assets/22111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/22111.png -------------------------------------------------------------------------------- /.gitbook/assets/2212.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2212.png -------------------------------------------------------------------------------- /.gitbook/assets/2213.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2213.png -------------------------------------------------------------------------------- /.gitbook/assets/2214.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2214.png -------------------------------------------------------------------------------- /.gitbook/assets/2215.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2215.png -------------------------------------------------------------------------------- /.gitbook/assets/2216.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2216.png -------------------------------------------------------------------------------- /.gitbook/assets/2217.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2217.png -------------------------------------------------------------------------------- /.gitbook/assets/2219.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2219.png -------------------------------------------------------------------------------- /.gitbook/assets/2220.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2220.png -------------------------------------------------------------------------------- /.gitbook/assets/2221.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2221.png -------------------------------------------------------------------------------- /.gitbook/assets/2222.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2222.png -------------------------------------------------------------------------------- /.gitbook/assets/2240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2240.png -------------------------------------------------------------------------------- /.gitbook/assets/2241.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2241.png -------------------------------------------------------------------------------- /.gitbook/assets/2242.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2242.png -------------------------------------------------------------------------------- /.gitbook/assets/2243.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2243.png -------------------------------------------------------------------------------- /.gitbook/assets/2244.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2244.png -------------------------------------------------------------------------------- /.gitbook/assets/2250.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2250.png -------------------------------------------------------------------------------- /.gitbook/assets/2251.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2251.png -------------------------------------------------------------------------------- /.gitbook/assets/22510.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/22510.png -------------------------------------------------------------------------------- /.gitbook/assets/22511.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/22511.png -------------------------------------------------------------------------------- /.gitbook/assets/22512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/22512.png -------------------------------------------------------------------------------- /.gitbook/assets/22513.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/22513.png -------------------------------------------------------------------------------- /.gitbook/assets/22514.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/22514.png -------------------------------------------------------------------------------- /.gitbook/assets/2252.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2252.png -------------------------------------------------------------------------------- /.gitbook/assets/2256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2256.png -------------------------------------------------------------------------------- /.gitbook/assets/2257.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2257.png -------------------------------------------------------------------------------- /.gitbook/assets/2258.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2258.png -------------------------------------------------------------------------------- /.gitbook/assets/2259.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2259.png -------------------------------------------------------------------------------- /.gitbook/assets/31201.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/31201.jpg -------------------------------------------------------------------------------- /.gitbook/assets/31401.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/31401.png -------------------------------------------------------------------------------- /.gitbook/assets/31402.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/31402.png -------------------------------------------------------------------------------- /.gitbook/assets/31403.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/31403.png -------------------------------------------------------------------------------- /.gitbook/assets/31501.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/31501.png -------------------------------------------------------------------------------- /.gitbook/assets/31521.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/31521.png -------------------------------------------------------------------------------- /.gitbook/assets/31522.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/31522.png -------------------------------------------------------------------------------- /.gitbook/assets/31531.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/31531.png -------------------------------------------------------------------------------- /.gitbook/assets/31532.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/31532.png -------------------------------------------------------------------------------- /.gitbook/assets/31533.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/31533.png -------------------------------------------------------------------------------- /.gitbook/assets/31534.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/31534.png -------------------------------------------------------------------------------- /.gitbook/assets/31535.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/31535.png -------------------------------------------------------------------------------- /.gitbook/assets/3311.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3311.png -------------------------------------------------------------------------------- /.gitbook/assets/3312.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3312.png -------------------------------------------------------------------------------- /.gitbook/assets/3313.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3313.png -------------------------------------------------------------------------------- /.gitbook/assets/3314.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3314.png -------------------------------------------------------------------------------- /.gitbook/assets/3315.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3315.png -------------------------------------------------------------------------------- /.gitbook/assets/3321.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3321.png -------------------------------------------------------------------------------- /.gitbook/assets/3510.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3510.png -------------------------------------------------------------------------------- /.gitbook/assets/3511.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3511.png -------------------------------------------------------------------------------- /.gitbook/assets/3512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3512.png -------------------------------------------------------------------------------- /.gitbook/assets/3513.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3513.png -------------------------------------------------------------------------------- /.gitbook/assets/3520.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3520.png -------------------------------------------------------------------------------- /.gitbook/assets/3521.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3521.png -------------------------------------------------------------------------------- /.gitbook/assets/3523.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3523.png -------------------------------------------------------------------------------- /.gitbook/assets/3524.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3524.png -------------------------------------------------------------------------------- /.gitbook/assets/3525.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3525.png -------------------------------------------------------------------------------- /.gitbook/assets/3750.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3750.png -------------------------------------------------------------------------------- /.gitbook/assets/3820.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3820.png -------------------------------------------------------------------------------- /.gitbook/assets/3841.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/3841.png -------------------------------------------------------------------------------- /.gitbook/assets/4410.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/4410.png -------------------------------------------------------------------------------- /.gitbook/assets/44231.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/44231.png -------------------------------------------------------------------------------- /.gitbook/assets/44232.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/44232.png -------------------------------------------------------------------------------- /.gitbook/assets/51101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51101.png -------------------------------------------------------------------------------- /.gitbook/assets/51102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51102.png -------------------------------------------------------------------------------- /.gitbook/assets/51103.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51103.png -------------------------------------------------------------------------------- /.gitbook/assets/51104.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51104.png -------------------------------------------------------------------------------- /.gitbook/assets/51105.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51105.png -------------------------------------------------------------------------------- /.gitbook/assets/51106.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51106.png -------------------------------------------------------------------------------- /.gitbook/assets/51107.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51107.png -------------------------------------------------------------------------------- /.gitbook/assets/51108.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51108.png -------------------------------------------------------------------------------- /.gitbook/assets/51109.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51109.png -------------------------------------------------------------------------------- /.gitbook/assets/51110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51110.png -------------------------------------------------------------------------------- /.gitbook/assets/51111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51111.png -------------------------------------------------------------------------------- /.gitbook/assets/51301.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51301.png -------------------------------------------------------------------------------- /.gitbook/assets/51302.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51302.png -------------------------------------------------------------------------------- /.gitbook/assets/51303.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51303.png -------------------------------------------------------------------------------- /.gitbook/assets/51304.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/51304.png -------------------------------------------------------------------------------- /.gitbook/assets/52101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/52101.png -------------------------------------------------------------------------------- /.gitbook/assets/52102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/52102.png -------------------------------------------------------------------------------- /.gitbook/assets/52103.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/52103.png -------------------------------------------------------------------------------- /.gitbook/assets/52201.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/52201.png -------------------------------------------------------------------------------- /.gitbook/assets/52202.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/52202.png -------------------------------------------------------------------------------- /.gitbook/assets/52211.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/52211.png -------------------------------------------------------------------------------- /.gitbook/assets/52212.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/52212.png -------------------------------------------------------------------------------- /.gitbook/assets/52213.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/52213.png -------------------------------------------------------------------------------- /.gitbook/assets/52301.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/52301.png -------------------------------------------------------------------------------- /.gitbook/assets/52302.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/52302.png -------------------------------------------------------------------------------- /.gitbook/assets/53211.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53211.png -------------------------------------------------------------------------------- /.gitbook/assets/53301.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53301.jpg -------------------------------------------------------------------------------- /.gitbook/assets/53302.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53302.jpg -------------------------------------------------------------------------------- /.gitbook/assets/53303.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53303.jpg -------------------------------------------------------------------------------- /.gitbook/assets/53304.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53304.jpg -------------------------------------------------------------------------------- /.gitbook/assets/53401.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53401.gif -------------------------------------------------------------------------------- /.gitbook/assets/53402.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53402.png -------------------------------------------------------------------------------- /.gitbook/assets/53406.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53406.png -------------------------------------------------------------------------------- /.gitbook/assets/53407.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53407.gif -------------------------------------------------------------------------------- /.gitbook/assets/53408.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53408.png -------------------------------------------------------------------------------- /.gitbook/assets/53501.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53501.png -------------------------------------------------------------------------------- /.gitbook/assets/53511.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53511.jpg -------------------------------------------------------------------------------- /.gitbook/assets/53512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53512.png -------------------------------------------------------------------------------- /.gitbook/assets/53531.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53531.png -------------------------------------------------------------------------------- /.gitbook/assets/53532.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53532.png -------------------------------------------------------------------------------- /.gitbook/assets/53533.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53533.png -------------------------------------------------------------------------------- /.gitbook/assets/53534.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53534.png -------------------------------------------------------------------------------- /.gitbook/assets/53535.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53535.png -------------------------------------------------------------------------------- /.gitbook/assets/53536.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53536.png -------------------------------------------------------------------------------- /.gitbook/assets/53537.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53537.png -------------------------------------------------------------------------------- /.gitbook/assets/53538.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53538.png -------------------------------------------------------------------------------- /.gitbook/assets/53539.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/53539.png -------------------------------------------------------------------------------- /.gitbook/assets/54001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54001.jpg -------------------------------------------------------------------------------- /.gitbook/assets/54002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54002.png -------------------------------------------------------------------------------- /.gitbook/assets/54101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54101.png -------------------------------------------------------------------------------- /.gitbook/assets/54102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54102.png -------------------------------------------------------------------------------- /.gitbook/assets/54103.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54103.png -------------------------------------------------------------------------------- /.gitbook/assets/54104.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54104.png -------------------------------------------------------------------------------- /.gitbook/assets/54105.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54105.png -------------------------------------------------------------------------------- /.gitbook/assets/54201.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54201.png -------------------------------------------------------------------------------- /.gitbook/assets/54202.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54202.jpg -------------------------------------------------------------------------------- /.gitbook/assets/54202.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54202.png -------------------------------------------------------------------------------- /.gitbook/assets/54203.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54203.png -------------------------------------------------------------------------------- /.gitbook/assets/54301.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54301.jpg -------------------------------------------------------------------------------- /.gitbook/assets/54302.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54302.png -------------------------------------------------------------------------------- /.gitbook/assets/55100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/55100.png -------------------------------------------------------------------------------- /.gitbook/assets/55101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/55101.png -------------------------------------------------------------------------------- /.gitbook/assets/55102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/55102.png -------------------------------------------------------------------------------- /.gitbook/assets/55103.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/55103.png -------------------------------------------------------------------------------- /.gitbook/assets/55104.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/55104.png -------------------------------------------------------------------------------- /.gitbook/assets/61101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/61101.png -------------------------------------------------------------------------------- /.gitbook/assets/61102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/61102.png -------------------------------------------------------------------------------- /.gitbook/assets/61103.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/61103.png -------------------------------------------------------------------------------- /.gitbook/assets/61104.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/61104.png -------------------------------------------------------------------------------- /.gitbook/assets/61201.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/61201.png -------------------------------------------------------------------------------- /.gitbook/assets/61202.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/61202.png -------------------------------------------------------------------------------- /.gitbook/assets/61301.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/61301.png -------------------------------------------------------------------------------- /.gitbook/assets/6201.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/6201.png -------------------------------------------------------------------------------- /.gitbook/assets/6202.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/6202.png -------------------------------------------------------------------------------- /.gitbook/assets/62201.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/62201.png -------------------------------------------------------------------------------- /.gitbook/assets/63101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/63101.png -------------------------------------------------------------------------------- /.gitbook/assets/63102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/63102.png -------------------------------------------------------------------------------- /.gitbook/assets/63103.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/63103.png -------------------------------------------------------------------------------- /.gitbook/assets/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/image.png -------------------------------------------------------------------------------- /.gitbook/assets/xor2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/xor2.gif -------------------------------------------------------------------------------- /.gitbook/assets/2111-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2111-1.png -------------------------------------------------------------------------------- /.gitbook/assets/2111-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2111-2.png -------------------------------------------------------------------------------- /.gitbook/assets/2111-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2111-3.png -------------------------------------------------------------------------------- /.gitbook/assets/2111-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2111-4.png -------------------------------------------------------------------------------- /.gitbook/assets/2111-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2111-5.png -------------------------------------------------------------------------------- /.gitbook/assets/2111-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2111-6.png -------------------------------------------------------------------------------- /.gitbook/assets/2111-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2111-7.png -------------------------------------------------------------------------------- /.gitbook/assets/2111-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2111-8.png -------------------------------------------------------------------------------- /.gitbook/assets/2150-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2150-1.png -------------------------------------------------------------------------------- /.gitbook/assets/2150-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2150-2.png -------------------------------------------------------------------------------- /.gitbook/assets/215310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/215310.png -------------------------------------------------------------------------------- /.gitbook/assets/215311.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/215311.png -------------------------------------------------------------------------------- /.gitbook/assets/2220 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/2220 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/21110 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21110 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/21111 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/21111 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/213-2 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/213-2 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/52301 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/52301 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/54101 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54101 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/54201 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54201 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/54202 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54202 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/54203 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54203 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/54203 (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54203 (2).png -------------------------------------------------------------------------------- /.gitbook/assets/54203 (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/54203 (3).png -------------------------------------------------------------------------------- /.gitbook/assets/62201 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/62201 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/image (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (10).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/image (10).png -------------------------------------------------------------------------------- /.gitbook/assets/image (11).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/image (11).png -------------------------------------------------------------------------------- /.gitbook/assets/image (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/image (2).png -------------------------------------------------------------------------------- /.gitbook/assets/image (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/image (3).png -------------------------------------------------------------------------------- /.gitbook/assets/image (4).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/image (4).png -------------------------------------------------------------------------------- /.gitbook/assets/image (5).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/image (5).png -------------------------------------------------------------------------------- /.gitbook/assets/image (6).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/image (6).png -------------------------------------------------------------------------------- /.gitbook/assets/image (7).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/image (7).png -------------------------------------------------------------------------------- /.gitbook/assets/image (8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/image (8).png -------------------------------------------------------------------------------- /.gitbook/assets/image (9).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/image (9).png -------------------------------------------------------------------------------- /.gitbook/assets/cpu-and-gpu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/cpu-and-gpu.jpg -------------------------------------------------------------------------------- /.gitbook/assets/186c0b1c4a4a3e94ad.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nainsys/PythonDeepLearning/HEAD/.gitbook/assets/186c0b1c4a4a3e94ad.gif -------------------------------------------------------------------------------- /3./3.3./README.md: -------------------------------------------------------------------------------- 1 | # 3.3. 파이썬 기본 문법 2 | 3 | 4 | Python 언어는 Perl, C 및 Java와 많은 공통점이 있습니다. 그러나 언어 간에 몇 가지 명확한 차이가 있습니다. 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2.-1/2.6.-ai-3/README.md: -------------------------------------------------------------------------------- 1 | # 2.6. AI공부에 필요한 기본지식 3가지 2 | 3 | AI를 체계적으로 공부하기 위해서는 수학, 프로그래밍 기술, AI의 적용 대상 산업에 대한 지식이 필요합니다. 4 | 5 | ![](../../.gitbook/assets/260.png) 6 | 7 | -------------------------------------------------------------------------------- /4.-and/5.2./README.md: -------------------------------------------------------------------------------- 1 | # 5.2. 딥러닝 개념 소개 2 | 3 | 딥러닝은 머신러닝의 세부 방법론들을 통칭하는 개념에 불과합니다. 즉, 이론적으로 딥러닝은 머신러닝의 ‘부분집합’이라고 할 수 있으며, 사실 기존 머신러닝 이론에서 크게 새로울 것이 없습니다. 4 | 5 | 딥러닝을 이해 하기 위해서는 퍼셉트론과 신경망을 학습해야 합니다. 6 | 7 | -------------------------------------------------------------------------------- /3./3.4./README.md: -------------------------------------------------------------------------------- 1 | # 3.4. 자료형과 연산자 2 | 3 | 변수는 값을 저장하기 위해 예약된 메모리 위치 일뿐입니다. 즉, 변수를 만들 때 메모리에 일부 공간을 예약합니다. 변수의 데이터 유형에 따라 인터프리터는 메모리를 할당하고 예약된 메모리에 저장할 수 있는 것을 결정합니다. 따라서 변수에 다른 데이터 유형을 할당하여 이러한 변수에 정수, 소수 또는 문자를 저장할 수 있습니다. 4 | 5 | -------------------------------------------------------------------------------- /4.-and/README.md: -------------------------------------------------------------------------------- 1 | # 5. 머신러닝 & 딥러닝 2 | 3 | 4 | 이 챕터에서 텐서플로 관련된 내용 대부분은 [https://github.com/aymericdamien/TensorFlow-Examples](https://github.com/aymericdamien/TensorFlow-Examples) 에서 발췌 했음을 밝힙니다. 또한 조대협님의 블로그 [https://bcho.tistory.com](https://bcho.tistory.com/) 등 많은 싸이트를 참고 했습니다. 5 | 6 | -------------------------------------------------------------------------------- /2./2.1./README.md: -------------------------------------------------------------------------------- 1 | # 2.1. 윈도우 환경에서 설치하기 2 | 3 | 4 | 파이썬은 무료로 사용할 수 있습니다. 공식 사이트에서 설치파일을 다운 받아 사용할 수도 있지만, 그렇게 하면 과학 계산을 위한 SciPy, NumPy, scikit-learn 등의 여러 파이썬 패키지는 따로 설치해야 합니다. 패키지들을 하나 하나 직접 설치하면 갖가지 예상하지 못한 문제가 생길 수 있기 때문에 많은 사람들이 운영체제 환경에 맞게 패키지들을 미리 준비해 놓은 배포판으로 설치합니다. 5 | 6 | 아나콘다를 설치하면 더욱 편리한 사용 환경을 쉽게 만들 수 있습니다. 7 | 8 | -------------------------------------------------------------------------------- /undefined-2.md: -------------------------------------------------------------------------------- 1 | # 9. 파이토치로 시작하는 딥 러닝 입문 2 | 3 | 파이토치는 공식 문서가 굉장히 잘 작성되어져 있습니다. 4 | 5 | {% embed url="https://tutorials.pytorch.kr/beginner/blitz/tensor\_tutorial.html" %} 6 | 7 | 8 | 9 | 파이토치를 따라하면서 이해하기 쉽게 된 싸이트는 유원준님의 PyTorch로 시작하는 딥 러닝 입문 싸이트 입니다. 10 | 11 | {% embed url="https://wikidocs.net/book/2788" %} 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /4.-1.md: -------------------------------------------------------------------------------- 1 | # 5. 기초수학 2 | 3 | •인공지능의 기초는 수학입니다. 인공지능에서 수학이 중요한 이유는, 인공지능\(머신러닝과 딥러닝\)의 연산 과정에서 수학을 사용하고 있기 때문입니다. 인터넷에 다양한 학습자료가 있으므로 링크만 걸어둡니다. 4 | 5 | •인공지능 기초수학• 6 | 7 | {% embed url="https://youtu.be/5d1RUzuMmWg" %} 8 | 9 | 10 | 11 | •다음 싸이트의 내용을 참고하여 공부하시면 더욱 쉽습니다. 12 | 13 | {% embed url="https://thebook.io/080246/" %} 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /3./3.10.-sequence/README.md: -------------------------------------------------------------------------------- 1 | # 3.10. 시퀀스\(Sequence\) 자료형 활용 2 | 3 | 파이썬에서 가장 기본적인 데이터 구조는 시퀀스입니다. 시퀀스란 데이터를 순서대로 하나씩 나열하여 나타낸 데이터 구조입니다. 4 | 5 | 시퀀스의 각 요소에는 특정 위치\(~번째\)의 데이터를 가리키는 인덱스가 지정됩니다. 첫 번째 인덱스는 0이고, 두 번째 인덱스는 1입니다. 6 | 7 | 파이썬에는 여섯 가지 시퀀스 유형이 있지만 가장 일반적인 것은 list과 tuple입니다. 8 | 9 | 색인 생성, 분리, 추가, 곱하기 및 구성원 확인 등이 시퀀스 유형으로 처리되는 일들입니다. 10 | 11 | -------------------------------------------------------------------------------- /4..md: -------------------------------------------------------------------------------- 1 | # 6. 머신러닝을 위한 파이썬 2 | 3 | 파이썬으로 머신러닝을 구현하는 부분입니다. 4 | 5 | 먼저 다음 강의를 끝까지 따라해 봅니다. 6 | 7 | 8 | 9 | 부스트 코스 - 최성철 교수님의 머신러닝을 위한 파이 10 | 11 | {% embed url="https://www.boostcourse.org/ai222" %} 12 | 13 | 14 | 15 | 박성호 교수님의 머신러닝/딥러닝 강의 유튜브 영상 16 | 17 | {% embed url="https://www.youtube.com/channel/UCZAkjFAaT9gZk-nol6EIX9w?app=desktop" %} 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /6.-2.x.md: -------------------------------------------------------------------------------- 1 | # 7. 텐서플로 2.x 2 | 3 | 텐서플로 강좌는 인터넷에 아주 많이 있습니다. 4 | 5 | 일단 박성호 교수님의 강의 동영상으로 공부합니다. 6 | 7 | {% embed url="https://www.youtube.com/playlist?app=desktop&list=PLS8gIc2q83OhM0RTktKDitgZGX5dHo7Vs" %} 8 | 9 | 10 | 11 | 다음 사이트를 참고하시면 텐서플로에 대한 이해를 완벽하게 하실거로 생각 합니다. 12 | 13 | 텐서플로우 공식 가이드 문서 14 | 15 | {% embed url="https://www.tensorflow.org/guide?hl=ko" %} 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /1.1.-artificial-intelligence/1.4.-greater-than-greater-than.md: -------------------------------------------------------------------------------- 1 | # 1.4. 인공지능 > 머신러닝 > 딥러닝 2 | 3 | AI의 역사에서 그 패러다임이 탐색에서 지식으로 그리고 학습으로 키워드가 변해 온 것을 확인할 수 있습니다. 4 | 5 | 탐색 --> 지식 --> 학습 6 | 7 | AI와 머신러닝\(기계학습\), 딥러닝\(심층신경망\)의 뜻을 정확하게 구분할 수 있어야 합니다. 인공지능의 여러 방식 중 학습에 기반을 둔 것이 머신러닝\(기계학습\)이고, 딥러닝은 머신러닝 중에서 스스로 학습하는 최신 기법이라고 할 수 있습니다. 8 | 9 | ![](../.gitbook/assets/114.png) 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /1./1.6./untitled-11.md: -------------------------------------------------------------------------------- 1 | # 1.6.8. 장고\(Django\) 2 | 3 | 4 | Djano란 보안이 우수하고 유지보수가 편리한 웹사이트를 신속하게 개발하는 하도록 도움을 주는 파이썬 웹 프레임워크입니다. 장고 프레임워크는 웹 개발을 하는데 많은 도움을 주기 때문에 새롭게 웹 개발을 시작할 필요 없이 그저 프레임워크를 활용하여 앱 개발에만 집중할 수 있도록 해줍니다. 5 | 6 | Django는 Python 기반 웹 프레임워크 중에 가장 널리 퍼져있습니다. 일반적으로 파이썬을 웹 서비스용으로 사용 한다고 하면 Django 또는 Flask를 쓴다고 생각하면 됩니다. 인스타그램이 장고로 만든 대표적인 웹싸이트입니다. 장고는 소스 자체가 간결하고 프레임워크의 흐름이 명료하여 효율적인 웹 개발을 할 수 있습니다. 7 | 8 | -------------------------------------------------------------------------------- /2.-1/1.6./untitled-11.md: -------------------------------------------------------------------------------- 1 | # 2.5.8. 장고\(Django\) 2 | 3 | 4 | Djano란 보안이 우수하고 유지보수가 편리한 웹사이트를 신속하게 개발하는 하도록 도움을 주는 파이썬 웹 프레임워크입니다. 장고 프레임워크는 웹 개발을 하는데 많은 도움을 주기 때문에 새롭게 웹 개발을 시작할 필요 없이 그저 프레임워크를 활용하여 앱 개발에만 집중할 수 있도록 해줍니다. 5 | 6 | Django는 Python 기반 웹 프레임워크 중에 가장 널리 퍼져있습니다. 일반적으로 파이썬을 웹 서비스용으로 사용 한다고 하면 Django 또는 Flask를 쓴다고 생각하면 됩니다. 인스타그램이 장고로 만든 대표적인 웹싸이트입니다. 장고는 소스 자체가 간결하고 프레임워크의 흐름이 명료하여 효율적인 웹 개발을 할 수 있습니다. 7 | 8 | -------------------------------------------------------------------------------- /1./1.6./untitled-16.md: -------------------------------------------------------------------------------- 1 | # 1.6.3. 스파이더\(Spyder\) 2 | 3 | 4 | Spyder는 Anaconda 배포본에 포함되어 있는 IDE입니다. 에디터와 콘솔을 지원하기 때문에 디버깅 작업을 편하기 수행할 수 있습니다. 또한, 프로젝트, 디버깅, 헬프, 변수 보기\(variable explorer\) 등 다양한 편의기능을 제공합니다. 편집기에서 편집하다가 스크립트를 전체 수행하거나 일부 영역을 선택한 후 그 부분만 수행할 수 있습니다. 과학기술계산용으로 특화되었습니다. 5 | 6 | Spyder는 Python으로 작성되었습니다. Spyder에서 PyCharm과 비교하여 가장 큰 장점은 변수 탐색기가 있다는 것입니다. 7 | 8 | ![](../../.gitbook/assets/1641.png) 9 | 10 | -------------------------------------------------------------------------------- /2.-1/1.6./untitled-16.md: -------------------------------------------------------------------------------- 1 | # 2.5.3. 스파이더\(Spyder\) 2 | 3 | 4 | Spyder는 Anaconda 배포본에 포함되어 있는 IDE입니다. 에디터와 콘솔을 지원하기 때문에 디버깅 작업을 편하기 수행할 수 있습니다. 또한, 프로젝트, 디버깅, 헬프, 변수 보기\(variable explorer\) 등 다양한 편의기능을 제공합니다. 편집기에서 편집하다가 스크립트를 전체 수행하거나 일부 영역을 선택한 후 그 부분만 수행할 수 있습니다. 과학기술계산용으로 특화되었습니다. 5 | 6 | Spyder는 Python으로 작성되었습니다. Spyder에서 PyCharm과 비교하여 가장 큰 장점은 변수 탐색기가 있다는 것입니다. 7 | 8 | ![](../../.gitbook/assets/1641.png) 9 | 10 | -------------------------------------------------------------------------------- /3./3.3./3.3.6..md: -------------------------------------------------------------------------------- 1 | # 3.3.6. 문자열 표시 2 | 3 | 4 | 5 | 문자열\(String\)이란 문자와 단어 등으로 구성된 문자들의 집합을 의미합니다. 파이썬은 같은 유형의 따옴표가 문자열을 시작하고 끝내는 한 문자열 리터럴을 나타 내기 위해 단일 \( '\), 이중 \( "\) 및 삼중 \(' '' ''" "\) 따옴표를 사용합니다. 6 | 7 | 삼중 따옴표는 여러 줄에 걸쳐 문자열을 연결하는 데 사용됩니다. 예를 들어, 다음은 모두 정상 프로그램 코딩입니다. 8 | 9 | ```text 10 | word = 'word' 11 | sentence = "This is a sentence." 12 | paragraph = """This is a paragraph. It is 13 | made up of multiple lines and sentences.""" 14 | ``` 15 | 16 | -------------------------------------------------------------------------------- /2./2.2./2.2.3.-1.md: -------------------------------------------------------------------------------- 1 | # 2.2.3. 케라스 설치 2 | 3 | 4 | Anaconda Prompt에서 onebook 가상환경인지를 확인한 후 5 | 6 | >pip install keras 7 | 8 | 를 실행하여 케라스를 설치합니다. 9 | 10 | ![](../../.gitbook/assets/2221.png) 11 | 12 | Anaconda Prompt 에서 onebook 가상환경인지를 확인한 후 python을 실행합니다. 다음을 코드를 실행 해 봅니다. 13 | 14 | ```text 15 | >>> import keras as k 16 | >>> print(k.__version__) 17 | ``` 18 | 19 | ![](../../.gitbook/assets/2222.png) 20 | 21 | 출력된 2.2.4 는 현재 내 개발환경에 설치된 케라스의 버전입니다. 22 | 23 | -------------------------------------------------------------------------------- /1./1.6./untitled-12.md: -------------------------------------------------------------------------------- 1 | # 1.6.7. 판다스\(Pandas\) 2 | 3 | 4 | pandas\([http://pandas.pydata.org/](http://pandas.pydata.org/)\)는 데이터 처리와 분석을 위한 파이썬 라이브러리입니다. Pandas는 파이썬에서 사용하는 데이터분석 라이브러리로, 행과 열로 이루어진 데이터 객체를 만들어 다룰 수 있어서 안정적으로 대용량의 데이터들을 처리하는데 매우 편리한 도구입니다. 5 | 6 | 우리가 가장 많이 접하는 데이터는 대부분 행과 열로 되어 있는 엑셀의 스프레드시트 형태일 것입니다. pandas는 크게 세가지의 자료구조를 지원하고 있는데, 1차원 자료구조인 Series, 2차원 자료구조인 DataFrame, 그리고 3차원 자료구조인 Panel을 지원합니다. Pandas를 사용하면 엑셀 쉬트 같은 2차원 테이블 데이터를 파이썬에서 좀 더 편리하게 사용할 수 있습니다. 7 | 8 | -------------------------------------------------------------------------------- /2.-1/1.6./untitled-12.md: -------------------------------------------------------------------------------- 1 | # 2.5.7. 판다스\(Pandas\) 2 | 3 | 4 | pandas\([http://pandas.pydata.org/](http://pandas.pydata.org/)\)는 데이터 처리와 분석을 위한 파이썬 라이브러리입니다. Pandas는 파이썬에서 사용하는 데이터분석 라이브러리로, 행과 열로 이루어진 데이터 객체를 만들어 다룰 수 있어서 안정적으로 대용량의 데이터들을 처리하는데 매우 편리한 도구입니다. 5 | 6 | 우리가 가장 많이 접하는 데이터는 대부분 행과 열로 되어 있는 엑셀의 스프레드시트 형태일 것입니다. pandas는 크게 세가지의 자료구조를 지원하고 있는데, 1차원 자료구조인 Series, 2차원 자료구조인 DataFrame, 그리고 3차원 자료구조인 Panel을 지원합니다. Pandas를 사용하면 엑셀 쉬트 같은 2차원 테이블 데이터를 파이썬에서 좀 더 편리하게 사용할 수 있습니다. 7 | 8 | -------------------------------------------------------------------------------- /1./1.6./untitled-13.md: -------------------------------------------------------------------------------- 1 | # 1.6.6. Matplotlib 2 | 3 | 4 | Matplotlib\([https://matplotlib.org/](https://matplotlib.org/)\)은 파이썬의 대표적인 과학 계산용 그래프 라이브러리입니다. 선 그래프, 히스토그램, 산점도 등을 지원하며 출판에 쓸 수 있을 만큼의 고품질 그래프를 그려줍니다. 5 | 6 | 물론 파이썬에 기본적으로 내장된 리스트형 자료로도 충분히 수많은 종류의 데이터를 그래프화할 수 있습니다. 그러나 아무래도 Numpy를 쓸 때보다는 코드가 굉장히 복잡해지고, 그래프를 얻는 속도도 느립니리다. 실제로 인터넷 상의 Matplotlib 튜토리얼이나 예제들을 봐도 다들 Numpy의 ndarray 자료형을 사용하지 리스트형은 잘 사용하지 않습니다. 7 | 8 | 데이터와 분석 결과를 다양한 관점에서 시각화 해보면 매우 중요한 결과와 통찰을 얻을 수 있습니다. 9 | 10 | -------------------------------------------------------------------------------- /2.-1/1.6./untitled-13.md: -------------------------------------------------------------------------------- 1 | # 2.5.6. Matplotlib 2 | 3 | 4 | Matplotlib\([https://matplotlib.org/](https://matplotlib.org/)\)은 파이썬의 대표적인 과학 계산용 그래프 라이브러리입니다. 선 그래프, 히스토그램, 산점도 등을 지원하며 출판에 쓸 수 있을 만큼의 고품질 그래프를 그려줍니다. 5 | 6 | 물론 파이썬에 기본적으로 내장된 리스트형 자료로도 충분히 수많은 종류의 데이터를 그래프화할 수 있습니다. 그러나 아무래도 Numpy를 쓸 때보다는 코드가 굉장히 복잡해지고, 그래프를 얻는 속도도 느립니리다. 실제로 인터넷 상의 Matplotlib 튜토리얼이나 예제들을 봐도 다들 Numpy의 ndarray 자료형을 사용하지 리스트형은 잘 사용하지 않습니다. 7 | 8 | 데이터와 분석 결과를 다양한 관점에서 시각화 해보면 매우 중요한 결과와 통찰을 얻을 수 있습니다. 9 | 10 | -------------------------------------------------------------------------------- /1./1.6./untitled-10.md: -------------------------------------------------------------------------------- 1 | # 1.6.9. 파이큐티\(pyQT\) 2 | 3 | 4 | 파이썬으로 GUI 프로그래밍을 하려면 wxPython1, PyQt2, TkInter 등과 같은 패키지를 사용합니다. 그중 TkInter는 파이썬의 공식적인 GUI 패키지로서 별도의 프로그램을 설치하지 않고도 바로 사용할 수 있습니다. 5 | 6 | PyQt는 이름에서 알 수 있듯이 Qt라는 GUI 프레임워크의 파이썬 버전입니다. Qt는 GUI 프로그램 개발에 널리 쓰이는 크로스 플랫폼 프레임워크로서 주로 C++ 프로그래밍 언어를 사용해 프로그래밍합니다. 현재 공식적으로 지원하는 Qt 메이저 버전은 Qt4와 Qt5입니다. 그래서 Qt의 파이썬 바인딩인 PyQt도 PyQt4와 PyQt5로 두 가지 버전이 제공됩니다. PyQT를 사용해서 얻을 수 있는 가장 큰 이점 중 하나는 쉽고 편리하며 직관적인 인터페이스를 가진 GUI 편집기인 Qt Designer 를 사용할 수 있기 때문입니다. 7 | 8 | -------------------------------------------------------------------------------- /4.-numpy-and-scipy/README.md: -------------------------------------------------------------------------------- 1 | # 4. 필수 학습 라이브러리들 2 | 3 | 파이썬은 그 자체만으로도 훌륭한 범용 프로그래밍 언어이지만, 몇몇 라이브러리\(numpy, scipy, matplotlib\)의 도움으로 계산과학 분야에서 강력한 개발 환경을 갖추게 됩니다. 4 | 5 | SciPy는 수학, 과학 및 엔지니어링을위한 오픈 소스 코드 라이브러리 모음입니다. NumPy, Matplotlib 및 pandas는 SciPy의 기반 라이브러리입니다. 6 | 7 | NumPy는 N 차원 배열 객체, FORTRAN 및 C ++ 코드 통합, 선형 대수학 및 푸리에 변환과 같은 과학적 컴퓨팅 기능을 추가하는 Python 코드 라이브러리입니다. NumPy는 pandas와 같은 다른 많은 과학 컴퓨팅 패키지에 필수 종속성을 제공합니다. 8 | 9 | 머신러닝, 딥러닝을 공부하기에 앞서 기본 라이브러리인 NumPy, SciPy, Pandas 등에 대해 알아 봅니다. 10 | 11 | -------------------------------------------------------------------------------- /2.-1/1.6./untitled-10.md: -------------------------------------------------------------------------------- 1 | # 2.5.9. 파이큐티\(pyQT\) 2 | 3 | 4 | 파이썬으로 GUI 프로그래밍을 하려면 wxPython1, PyQt2, TkInter 등과 같은 패키지를 사용합니다. 그중 TkInter는 파이썬의 공식적인 GUI 패키지로서 별도의 프로그램을 설치하지 않고도 바로 사용할 수 있습니다. 5 | 6 | PyQt는 이름에서 알 수 있듯이 Qt라는 GUI 프레임워크의 파이썬 버전입니다. Qt는 GUI 프로그램 개발에 널리 쓰이는 크로스 플랫폼 프레임워크로서 주로 C++ 프로그래밍 언어를 사용해 프로그래밍합니다. 현재 공식적으로 지원하는 Qt 메이저 버전은 Qt4와 Qt5입니다. 그래서 Qt의 파이썬 바인딩인 PyQt도 PyQt4와 PyQt5로 두 가지 버전이 제공됩니다. PyQT를 사용해서 얻을 수 있는 가장 큰 이점 중 하나는 쉽고 편리하며 직관적인 인터페이스를 가진 GUI 편집기인 Qt Designer 를 사용할 수 있기 때문입니다. 7 | 8 | -------------------------------------------------------------------------------- /3./3.3./3.3.4.-reserved-words.md: -------------------------------------------------------------------------------- 1 | # 3.3.4. 예약어\(Reserved Words\) 2 | 3 | 4 | 5 | 다음 목록은 Python 키워드를 보여줍니다. 이것은 예약어이며 상수 또는 변수 또는 다른 식별자 이름으로 사용할 수 없습니다. 모든 파이썬 키워드는 소문자만 포함됩니다. 6 | 7 | | and | exec | not | 8 | | :--- | :--- | :--- | 9 | | assert | finally | or | 10 | | break | for | pass | 11 | | class | from | print | 12 | | continue | global | raise | 13 | | def | if | return | 14 | | del | import | try | 15 | | elif | in | while | 16 | | else | is | with | 17 | | except | lambda | yield | 18 | 19 | -------------------------------------------------------------------------------- /1./1.6./untitled-9.md: -------------------------------------------------------------------------------- 1 | # 1.6.10. 싸이킷런\(Scikit-learn\)\(Sklearn\) 2 | 3 | 4 | scikit-learn은 2007년 구글 썸머 코드에서 처음 구현됐으며 현재 파이썬으로 구현된 가장 유명한 기계 학습 오픈 소스 라이브러리 입니다. 5 | 6 | scikit-learn의 장점은 라이브러리 외적으로는 scikit 스택을 사용하고 있기 때문에 다른 라이브러리와의 호환성이 좋습니다. 내적으로는 통일된 인터페이스를 가지고 있기 때문에 매우 간단하게 여러 기법을 적용할 수 있어 쉽고 빠르게 최상의 결과를 얻을 수 있습니다. 7 | 8 | scikit-learn\(사이킷 런\)은 파이썬 머신러닝 라이브러리에서 정석과도 같은 라이브러리입니다. scikit-learn은 다양한 분류기를 지원하며 머신러닝 결과를 검증 하는 기능도 가지고 있습니다. 또한 분류, 회기, 클러스터링, 차원 축소처럼 머신러닝에 자주 사용되는 다양한 알고리즘을 지원합니다. 9 | 10 | -------------------------------------------------------------------------------- /1./1.7./1.7.2.-unsupervised-learning.md: -------------------------------------------------------------------------------- 1 | # 1.7.2. 비지도 학습 \(Unsupervised learning\) 2 | 3 | 비지도 학습\(Unsupervised learning\)은 정답\(레이블\)을 주지 않고 문제로만 학습을 시키는 방식을 비지도 학습이라고 합니다. 4 | 5 | 예를 들어 영화에 대한 종류를 학습시키기 위해서, 연령, 성별과 영화의 종류 \(액션, 드라마, SF\)를 학습시켰을 때, 이를 군집화 해보면 20대 남성은 액션 영화를 좋아하고 20대 여성은 드라마 영화를 좋아하는 것과 같은 군집된 결과를 얻을 수 있고, 이를 기반으로 20대 남성이 좋아하는 영화의 종류는 유사한 군집의 결과인 ”액션 영화" 라는 답을 내게 된다는 것입니다. 6 | 7 | 즉 레이블을 고려하지 않고 데이터에 숨겨진 패턴, 특성, 구조를 학습을 통해 발견하는 것입니다. 딥러닝에서 Unsupervised Learning 방법론으로 주로 사용되는 구조는 Autoencoders입니다. 8 | 9 | -------------------------------------------------------------------------------- /1./README.md: -------------------------------------------------------------------------------- 1 | # 1. 기본 용어의 이해 2 | 3 | 4 | 제4차 산업혁명\(第4次産業革命, The Fourth Industrial Revolution\) 이란 인공 지능\(AI\), 사물 인터넷\(IoT\), 빅데이터, 클라우드 컴퓨팅, 모바일 등 첨단 정보통신기술이 기존 산업과 서비스에 융합되거나 3D 프린팅, 로봇공학, 생명공학, 나노기술 등 여러 분야의 신기술과 결합되어 혁신적인 변화가 나타나는 차세대 산업혁명을 말합니다. 5 | 6 | 제4차 산업혁명은 초연결\(hyper connectivity\)과 초지능\(super intelligence\)을 특징으로 하기 때문에 기존 산업혁명에 비해 더 넓은 범위\(scope\)에 더 빠른 속도\(velocity\)로 크게 영향\(impact\)을 끼질 것입니친다. 7 | 8 | 4차 산업혁명과 함께 다양한 용어들이 생겨나고 사용되면서 때론 어떤 의미인지 생소할 때도 있는데 이 책에서 나오는 기본 용어들을 먼저 알아보겠습니다. 9 | 10 | -------------------------------------------------------------------------------- /2.-1/1.6./untitled-9.md: -------------------------------------------------------------------------------- 1 | # 2.5.10. 싸이킷런\(Scikit-learn\)\(Sklearn\) 2 | 3 | 4 | scikit-learn은 2007년 구글 썸머 코드에서 처음 구현됐으며 현재 파이썬으로 구현된 가장 유명한 기계 학습 오픈 소스 라이브러리 입니다. 5 | 6 | scikit-learn의 장점은 라이브러리 외적으로는 scikit 스택을 사용하고 있기 때문에 다른 라이브러리와의 호환성이 좋습니다. 내적으로는 통일된 인터페이스를 가지고 있기 때문에 매우 간단하게 여러 기법을 적용할 수 있어 쉽고 빠르게 최상의 결과를 얻을 수 있습니다. 7 | 8 | scikit-learn\(사이킷 런\)은 파이썬 머신러닝 라이브러리에서 정석과도 같은 라이브러리입니다. scikit-learn은 다양한 분류기를 지원하며 머신러닝 결과를 검증 하는 기능도 가지고 있습니다. 또한 분류, 회기, 클러스터링, 차원 축소처럼 머신러닝에 자주 사용되는 다양한 알고리즘을 지원합니다. 9 | 10 | -------------------------------------------------------------------------------- /2.-1/1./README.md: -------------------------------------------------------------------------------- 1 | # 2.1. 기본 용어의 이해 2 | 3 | 4 | 제4차 산업혁명\(第4次産業革命, The Fourth Industrial Revolution\) 이란 인공 지능\(AI\), 사물 인터넷\(IoT\), 빅데이터, 클라우드 컴퓨팅, 모바일 등 첨단 정보통신기술이 기존 산업과 서비스에 융합되거나 3D 프린팅, 로봇공학, 생명공학, 나노기술 등 여러 분야의 신기술과 결합되어 혁신적인 변화가 나타나는 차세대 산업혁명을 말합니다. 5 | 6 | 제4차 산업혁명은 초연결\(hyper connectivity\)과 초지능\(super intelligence\)을 특징으로 하기 때문에 기존 산업혁명에 비해 더 넓은 범위\(scope\)에 더 빠른 속도\(velocity\)로 크게 영향\(impact\)을 끼질 것입니친다. 7 | 8 | 4차 산업혁명과 함께 다양한 용어들이 생겨나고 사용되면서 때론 어떤 의미인지 생소할 때도 있는데 이 책에서 나오는 기본 용어들을 먼저 알아보겠습니다. 9 | 10 | -------------------------------------------------------------------------------- /4.-numpy-and-scipy/4.4-pandas/README.md: -------------------------------------------------------------------------------- 1 | # 4.4 Pandas 2 | 3 | Pandas\(\(Python Data Analysis Library\)는 데이타 분석\(Data Analysis\)을 위해 널리 사용되는 파이썬 라이브러리 패키지입니다. pandas는 과학용 파이썬 배포판인 아나콘다\(Anaconda\)에 기본적으로 제공되지만, 아나콘다를 사용하지 않을 경우에는 pip install pandas 를 통해 설치할 수 있습니다. 4 | 5 | pandas 를 사용하기 위해서 관례적으로 다음과 같이 모듈을 임포트\(import\) 합니다. pandas 외에도 배열 구조나 랜덤 값 생성 등의 기능을 활용하기 위한 numpy와 그래프를 그리기 위한 matplotlib도 함께 임포트 해줍니다. 6 | 7 | ```python 8 | import pandas as pd 9 | import numpy as np 10 | import matplotlib.pyplot as plt 11 | ``` 12 | 13 | -------------------------------------------------------------------------------- /1./1.6./untitled-17.md: -------------------------------------------------------------------------------- 1 | # 1.6.2. 파이참\(PyCharm\) 2 | 3 | 4 | Jetbrain에서 개발한 파이참은 파이썬 프로그램을 쉽게 개발할 수 있도록 하는 IDE\(Integrated Development Environment, 통합 개발 환경\)로 분류됩니다. IDE는 코드 편집기, 디버거, 컴파일러, 인터프리터 등을 포함하고 개발자에게 제공됩니다. 5 | 6 | 현재까지 파이썬 개발툴 중에서는 가장 높은 완성도를 지니고 있기 때문에 많이 쓰이는 개발툴중 하나입니다. PyCharm은 커뮤니티 에디션\(무료\)과 프로페셔널 에디션\(유료\)으로 나뉍니다. 윈도우, 리눅스, 맥 모두를 지원하여 어느 플랫폼에서나 사용 할 수 있다는 것도 큰 장점입니다. 7 | 8 | 파이참은 통합 개발 환경으로 더욱 전문가적인 일을 할 수 있고, 다양한 단축키로 작업 속도가 빠르며 오류를 찾아주는 기능으로 디버깅이 쉽습니다. 9 | 10 | ![](../../.gitbook/assets/1612.png) 11 | 12 | -------------------------------------------------------------------------------- /2.-1/1.6./untitled-17.md: -------------------------------------------------------------------------------- 1 | # 2.5.2. 파이참\(PyCharm\) 2 | 3 | 4 | Jetbrain에서 개발한 파이참은 파이썬 프로그램을 쉽게 개발할 수 있도록 하는 IDE\(Integrated Development Environment, 통합 개발 환경\)로 분류됩니다. IDE는 코드 편집기, 디버거, 컴파일러, 인터프리터 등을 포함하고 개발자에게 제공됩니다. 5 | 6 | 현재까지 파이썬 개발툴 중에서는 가장 높은 완성도를 지니고 있기 때문에 많이 쓰이는 개발툴중 하나입니다. PyCharm은 커뮤니티 에디션\(무료\)과 프로페셔널 에디션\(유료\)으로 나뉍니다. 윈도우, 리눅스, 맥 모두를 지원하여 어느 플랫폼에서나 사용 할 수 있다는 것도 큰 장점입니다. 7 | 8 | 파이참은 통합 개발 환경으로 더욱 전문가적인 일을 할 수 있고, 다양한 단축키로 작업 속도가 빠르며 오류를 찾아주는 기능으로 디버깅이 쉽습니다. 9 | 10 | ![](../../.gitbook/assets/1612.png) 11 | 12 | -------------------------------------------------------------------------------- /1.1.-artificial-intelligence/1.7./1.7.2.-unsupervised-learning.md: -------------------------------------------------------------------------------- 1 | # 1.6.2. 비지도 학습 \(Unsupervised learning\) 2 | 3 | 비지도 학습\(Unsupervised learning\)은 정답\(레이블\)을 주지 않고 문제로만 학습을 시키는 방식을 비지도 학습이라고 합니다. 4 | 5 | 예를 들어 영화에 대한 종류를 학습시키기 위해서, 연령, 성별과 영화의 종류 \(액션, 드라마, SF\)를 학습시켰을 때, 이를 군집화 해보면 20대 남성은 액션 영화를 좋아하고 20대 여성은 드라마 영화를 좋아하는 것과 같은 군집된 결과를 얻을 수 있고, 이를 기반으로 20대 남성이 좋아하는 영화의 종류는 유사한 군집의 결과인 ”액션 영화" 라는 답을 내게 된다는 것입니다. 6 | 7 | 즉 레이블을 고려하지 않고 데이터에 숨겨진 패턴, 특성, 구조를 학습을 통해 발견하는 것입니다. 딥러닝에서 Unsupervised Learning 방법론으로 주로 사용되는 구조는 Autoencoders입니다. 8 | 9 | -------------------------------------------------------------------------------- /3./3.7.-modules/3.7.4.-packages.md: -------------------------------------------------------------------------------- 1 | # 3.7.4. 패키지\(Packages\) 2 | 3 | 많은 모듈을 포함하는 매우 큰 응용 프로그램을 개발하려고 가정해 봅시다. 4 | 5 | 모듈 수가 늘어나면 한 위치에 존재하는 모든 모듈을 추적하는 것이 어려워집니다. 이름이나 기능이 유사한 경우에는 각각을 파악하기가 더 어려워집니다. 그들을 그룹화하고 구성하는 방법이 필요합니다. 6 | 7 | 패키지는 모듈과 하위 패키지들로 구성된 단일 Python 응용 프로그램 환경을 정의하는 계층적 파일 디렉토리 구조입니다. 패키지는 점으로 구분된 모듈 이름 표기를 사용하여 파이썬의 모듈의 네임스페이스를 구조화하는 방법입니다. 8 | 9 | 모듈이 전역 변수 이름 간의 충돌을 피하는 방법이라면 패키지는 모듈 이름 간의 충돌을 방지합니다. 예를 들어, 모듈 이름 A.B는 A 라는 이름의 패키지에 있는 B 라는 이름의 서브 모듈을 가리키는 것입니다. 운영체제 고유의 계층적 파일 구조를 사용하기 때문에 패키지를 만드는 것이 매우 간단합니다. 10 | 11 | -------------------------------------------------------------------------------- /3./3.3./3.3.7..md: -------------------------------------------------------------------------------- 1 | # 3.3.7. 주석 2 | 3 | 파이썬 주석은 블록단위와 한 줄\(행\) 단위로 주석을 만들 수 있습니다. 4 | 5 | 행단위 주석은 해시 기호 \(\#\)를 사용합니다. \# 다음에 오는 모든 문자들은 그 행의 끝까지 주석이며 파이썬 인터프리터는 주석을 무시합니다. 6 | 7 | ```text 8 | # First comment 9 | print "Hello, Python!" # second comment 10 | ``` 11 | 12 | 프로그램 명령문이나 표현식 뒤에 같은 행에도 주석을 입력할 수 있습니다. 13 | 14 | ```text 15 | name = "Madisetti" # This is again comment 16 | ``` 17 | 18 | 블록 단위 주석은 삼중 따옴표\('''\)를 사용합니다. 다음 삼중 따옴표로 묶인 문자열은 파이썬 인터프리터에서 무시되며 여러 줄의 주석으로 사용할 수 있습니다. 19 | 20 | ```text 21 | ''' 22 | This is a multiline 23 | comment. 24 | ''' 25 | ``` 26 | 27 | -------------------------------------------------------------------------------- /2.-1/2.6.-ai-3/2.6.1..md: -------------------------------------------------------------------------------- 1 | # 2.6.1. 수학 2 | 3 | AI를 형성하는 "머신러닝 데이터 분석"은 거의 대부분 숫자 컨트롤로 이루어져 있습니다. 4 | 5 | 인공지능이라는 말만 듣고, 인간의 뇌를 기계로 재현한 거라고 생각하는 분이 계시다면 큰 오산입니이다. AI 기술은 데이터 변화 경향에서 가장 정확하게 예측할 수 있는 방법을 수학적으로 엄밀하게 계산하는 것 입니다. 6 | 7 | 인공 지능이라는 것은 수학적 계산을 통해 인간이 생각하는 것 같이 보이게 만든 기계입니다. AI엔지니어 데이터 과학자에게 수학은 ‘기초체력’이라고 할 수 있습니다. 8 | 9 | 제대로 된 AI엔지니어와 데이터 과학자가 되려면 고등학교 수학을 전제로 대학 1 ~ 2년 차 정도의 교양수학은 필수라고 할 수 있습니다. 구체적으로는 미적분 · 선형대수학 · 기초통계학 · 집합 위상 등이 필요합니다. 일류 수준의 AI 엔지니어링 및 데이터 분석에서는 통계학적 지식이 필수이며, 그들을 제대로 이해하기 위해서는 그 주변 지식으로 미적분 · 선형대수학 · 집합 위상이 꼭 필요합니하다. 수학적 능력은 공부하면 할수록 그 길은 멀고 험한 과정 입니다. 10 | 11 | -------------------------------------------------------------------------------- /1./1.6./untitled-15.md: -------------------------------------------------------------------------------- 1 | # 1.6.4. 넘파이\(NumPy\) 2 | 3 | 4 | NumPy\(http://www.numpy.org/\)는 파이썬으로 과학 계산을 하려면 꼭 필요한 패키지입니다. NumPy는 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리 할 수 있도록 지원하는 파이썬의 라이브러리입니다. 5 | 6 | 프로그래밍 하기 어려운 C, C++, FORTRAN 등의 언어에 비하면, NumPy로는 편리하게 수치해석을 실행할 수 있습니다. 게다가 Numpy 내부 상당부분은 C나 포트란으로 작성되어 실행 속도도 빠른 편입니다. 기본적으로 array라는 자료를 생성하고 이를 바탕으로 색인, 처리, 연산 등을 하는 기능을 수행합니다. 물론 Numpy 자체만으로도 난수생성, 푸리에변환, 행렬연산, 간단한 기술통계 분석 정도는 가능하지만 실제로는 Scipy, Pandas, matplotlib 등 다른 Python 패키지와 함께 쓰이는 경우가 많습니다. 파이썬으로 수치해석, 통계 관련 기능을 구현하려고 할 때 Numpy는 가장 기본이 되는 모듈입니다. 기본적으로 쓰이는 모듈이다 보니 Numpy를 보통 np로 호출하는 것이 관례가 되었습니다. 7 | 8 | -------------------------------------------------------------------------------- /2./2.2./README.md: -------------------------------------------------------------------------------- 1 | # 2.2. 리눅스 환경에서 설치하기 2 | 3 | 4 | 리눅스 배포판의 종류는 매우 다양하며, 각각의 장단점 역시 뚜렷합니다. 국내에서는 주로 RedHat 의 레드햇 엔터프라이즈 리눅스\(RHEL\)와 계보를 같이하는 페도라\(Fedora\), 센트OS\(CentOS\)가 있으며, Debian으로부터 파생된 우분투\(ubuntu\), 민트\(Mint\)가 있습니다. 그리고 스마트폰에 탑재되는 안드로이드\(Android\)도 있습니다. 세계적으로 보자면 Slackware와 OpenSUSE 등의 또 다른 인기 배포판도 인기가 있습니다. 5 | 6 | 텐서플로는 우분투 14.0 버전 이상만을 지원하고 64비트 컴퓨터에서 안정적으로 실행됩니다. 따라서 사용하는 컴퓨터에 64bit Ubuntu 18 데스크탑 버전이 설치되어 있다고 전제하고 파이썬 및 텐서플로의 등의 설치를 진행합니다. 실제 저는 가상머신인 Oracle VM VirtualBox에 Ubuntu를 설치하고 딥러닝 개발 환경을 만들었습니다. 7 | 8 | 리눅스 환경에서 설치 과정에 대한 설명 위주로 진행되며 각각의 패키지에 대한 자세한 설명은 윈도우 환경의 설명을 참조하길 바랍니다. 9 | 10 | -------------------------------------------------------------------------------- /2.-1/1.6./untitled-15.md: -------------------------------------------------------------------------------- 1 | # 2.5.4. 넘파이\(NumPy\) 2 | 3 | 4 | NumPy\(http://www.numpy.org/\)는 파이썬으로 과학 계산을 하려면 꼭 필요한 패키지입니다. NumPy는 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리 할 수 있도록 지원하는 파이썬의 라이브러리입니다. 5 | 6 | 프로그래밍 하기 어려운 C, C++, FORTRAN 등의 언어에 비하면, NumPy로는 편리하게 수치해석을 실행할 수 있습니다. 게다가 Numpy 내부 상당부분은 C나 포트란으로 작성되어 실행 속도도 빠른 편입니다. 기본적으로 array라는 자료를 생성하고 이를 바탕으로 색인, 처리, 연산 등을 하는 기능을 수행합니다. 물론 Numpy 자체만으로도 난수생성, 푸리에변환, 행렬연산, 간단한 기술통계 분석 정도는 가능하지만 실제로는 Scipy, Pandas, matplotlib 등 다른 Python 패키지와 함께 쓰이는 경우가 많습니다. 7 | 8 | 파이썬으로 수치해석, 통계 관련 기능을 구현하려고 할 때 Numpy는 가장 기본이 되는 모듈입니다. 기본적으로 쓰이는 모듈이다 보니 Numpy를 보통 np로 호출하는 것이 관례가 되었습니다. 9 | 10 | -------------------------------------------------------------------------------- /2.-1/2.6.-ai-3/2.6.3.-ai.md: -------------------------------------------------------------------------------- 1 | # 2.6.3. AI의 적용 대상 산업에 대한 지식 2 | 3 | 엔지니어들은 수학적 능력과 프로그래밍 능력을 갖추고도 비즈니스 측면의 활용이나 사업에 애를 먹는 경우가 많습니다. 비즈니스 현장에서 뛰는 사람들 만이 아는 감각이라는 것도 무시할 수 없습니다. 4 | 5 | AI를 이용한 데이터 분석이 아무리 정밀하게 이뤄진다고 해도 그것이 "매출 향상"과 "업무 효율화"같은 구체적인 개선이나 결과로 이어지지 않는다면 별 의미가 없게 됩니다. 비즈니스 지식\(도메인 지식\)은 "무엇 때문에 AI를 도입할 것인가"또는 "왜 AI가 필요한가", "어떤 가설과 접근이 유효한가"등, 업무에 있어서 본질적인 과제를 해결하는 것에 관한 것을 말합니다. 6 | 7 | 엔지니어에 의해 만들어진 AI를 적절한 업계에 소개하고 어떤 AI가 필요한지 전략을 수립하는 분들을 "AI 디렉터"또는 "IT 컨설턴트"라고 합니다. 구체적으로는, 마케팅 지식, 재무제표 읽는 법 등 종사하는 직종에 따라 매우 다양할 수 있습다. 또한 지식 뿐만 아니라 현장의 문제를 발견하고 이를 해결할 수 있는 가설을 세우는 사고력, 제안력, 수치를 분석하여 전달하는 커뮤니케이션 능력 등의 비즈니스 능력도 필요 할 것 입니다. 8 | 9 | -------------------------------------------------------------------------------- /5./6.3.-dialogflow.md: -------------------------------------------------------------------------------- 1 | # 6.3. 구글 DialogFlow 챗봇 만들기 2 | 3 | Dialogflow는 2016년에 Api.ai 라고 하는 유명한 챗봇 플랫폼을 Google이 인수하여 자연어 처리나 Intent 매칭과 같은 대화식 인터페이스의 핵심 엔진인 머신러닝 엔진을 Google의 머신러닝 엔진으로 변경해서 좀 더 강화한 형태로 만든 챗봇 플랫폼입니다. 4 | 5 | 챗봇 플랫폼으로서의 Dialogflow의 가장 큰 특징은 최소한의 프로그래밍으로 Dialog\(대화\)의 Flow\(흐름\)를 만들기만 하면 이를 통해 챗봇을 만들수 있다데 있습니다. 즉 자연어 그대로 대화를 입력하면 그게 바로 챗봇이 되는 형태로 되어 있습니다. 6 | 7 | 기본적으로 Dialogflow는 대화를 구성해서 챗봇을 만들기 때문에 대화를 구성하는 기본 개념인 Intent\(화자의 의도\), Entity\(속성\), Context\(문맥\) 를 이해하는 것이 중요합니다. 8 | 9 | DialogFlow에 대한 자세한 설명은 [https://dialogflow.com/docs](https://dialogflow.com/docs) 싸이트를 참고하시면 됩니다. 10 | 11 | 12 | 13 | ## Dialogflow로 챗봇 만들기는 너무 길어 질 것 같아서 조만간 별도의 문서로 제공하겠습니다. 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /7..md: -------------------------------------------------------------------------------- 1 | # 8. 딥러닝을 이용한 자연어 처리 입문 2 | 3 | 자연어\(natural language\)란 우리가 일상 생활에서 사용하는 언어를 말합니다. 자연어 처리\(natural language processing\)란 이러한 자연어의 의미를 분석하여 컴퓨터가 처리할 수 있도록 하는 일을 말합니한다. 4 | 5 | 자연어 처리는 음성 인식, 내용 요약, 번역, 사용자의 감성 분석, 텍스트 분류 작업\(스팸 메일 분류, 뉴스 기사 카테고리 분류\), 질의 응답 시스템, 챗봇과 같은 곳에서 사용되는 분야 최근 딥 러닝이 주목을 받으면서, 인공지능이 IT 분야에서 중요 키워드로 떠오르고 있습니다. 자연어 처리는 기계에게 인간의 언어를 이해시킨다는 점에서 인공지능에 있어서 가장 중요한 연구 분야이면서도, 아직도 정복되어야 할 산이 많은 분야입니다. 이 과정에서는 자연어 처리에 필요한 전처리 방법\(preprocessing\), 딥 러닝 이전에 주류로 사용되었던 통계 기반의 언어 모델, 그리고 자연어 처리의 비약적인 성능을 이루어낸 딥 러닝을 이용한 자연어 처리에 대한 전반적인 지식을 다룹니다. 6 | 7 | 8 | 9 | 유원준님의 딥러닝을 이용한 자연어 처리 싸이트로 공부하시는 것이 가장 좋습니다. 다음 링크를 참고 하십시오. 10 | 11 | {% embed url="https://wikidocs.net/book/2155" %} 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /2./README.md: -------------------------------------------------------------------------------- 1 | # 2. 개발 환경설정 2 | 3 | 4 | 딥러닝은 윈도우, 리눅스, 맥에서 모두 실행 할 수 있습니다. 프로그래밍 언어도 파이썬, 자바, C++, Lua, Julia, R 등 다양하게 사용 할 수가 있습니다. 그러나 딥 러닝 연구를 살펴보면 십중팔구는 파이썬으로 된 소스 코드를 찾을 수 있습니다. 대부분의 머신러닝과 딥 러닝 프레임워크는 파이썬용으로 만들어지며, AI 분야에서 일하는 거의 모든 사람들이 파이썬을 이야기합니다. 5 | 6 | 파이썬의 라이브러리는 다른 언어에서 따라올 수 없는 부분입니다. 넘파이\(NumPy\)는 워낙 보편적으로 사용되는터라 텐서 연산에서 사실상 표준 API 역할을 합니다. 판다스\(Pandas\)는 R의 강력하고 유연한 데이터프레임을 파이썬으로 가져옵니다. 자연어 처리\(NLP\)에서는 이름도 유명한 NLTK와 빠른 속도가 장점인 스페이시\(SpaCy\)가 있습니다. 머신러닝 쪽에는 역전의 사이킷-런\(Scikit-learn\)이 있습니다. 딥러닝이라면 현재의 모든 라이브러리\(텐서플로우\(TensorFlow\), 파이토치\(PyTorch\), 체이너\(Chainer\), 아파치 MXNet\(Apache MXNet\), 테아노\(Theano\) 등 모두가 파이썬을 가장 우선시하는 프로젝트입니다. 7 | 8 | 개발 환경을 구축이란 아나콘다, 텐서플로, 파이참 그리고 기타 라이브러리들을 설치 하는 과정입니다. 9 | 10 | -------------------------------------------------------------------------------- /3./3.7.-modules/3.7.1..md: -------------------------------------------------------------------------------- 1 | # 3.7.1. 모듈의 참조 위치 2 | 3 | 모듈을 import 할 때, 파이썬 인터프리터는 다음 순서로 모듈을 검색합니다. 4 | 5 | · 현재 디렉토리 6 | 7 | · 현재 디렉토리에서 모듈이 발견되지 않으면 Python은 쉘 변수 PYTHONPATH의 각 디렉토리를 검색합니다. 8 | 9 | · 위의 방법이 실패하면 Python은 기본 경로를 확인합니다. UNIX에서이 기본 경로는 일반적으로 / usr / local / lib / python /입니다. 10 | 11 | 모듈 검색 경로는 시스템 모듈 sys에 sys.path 변수로 저장됩니다. sys.path 변수에는 현재 디렉토리, PYTHONPATH 및 설치 종속 기본값이 들어 있습니다. 12 | 13 | PYTHONPATH는 디렉토리 목록으로 구성된 환경 변수입니다. PYTHONPATH의 구문은 쉘 변수 PATH의 구문과 동일합니다. 다음은 Windows, Linux 시스템에서 일반적인 PYTHONPATH입니다. 14 | 15 | Windows 16 | 17 | ```text 18 | set PYTHONPATH = c:\python20\lib; 19 | ``` 20 | 21 | Linux 22 | 23 | ```text 24 | set PYTHONPATH = /usr/local/lib/python 25 | ``` 26 | 27 | -------------------------------------------------------------------------------- /1./1.6./untitled-8.md: -------------------------------------------------------------------------------- 1 | # 1.6.11. CUDA 2 | 3 | 4 | CUDA \("Compute Unified Device Architecture", 쿠다\)는 그래픽 처리 장치\(GPU\)에서 수행하는 \(병렬 처리\) 알고리즘을 C 프로그래밍 언어를 비롯한 산업 표준 언어를 사용하여 작성할 수 있도록 하는 GPGPU 기술입니다. CUDA는 엔비디아\(NVIDIA\)가 개발해오고 있으며 이 아키텍처를 사용하려면 NVIDIA GPU와 특별한 스트림 처리 드라이버가 필요합니다. CUDA는 G8X GPU로 구성된 지포스 8 시리즈급 이상에서 동작합니다. CUDA 플랫폼은 컴퓨터 커널의 실행을 위해 GPU의 가상 명령 집합과 병렬 연산 요소들을 직접 접근할 수 있는 소프트웨어 계층입니다. 5 | 6 | 딥러닝을 도와주는 여러 라이브러리도 CUDA와 함께 제공됩니다. cuDNN, Convolution 연산을 더 빠르게 만들어주는 cuFFT, 선형대수 모듈인 cuBLAS 등 사실상 필요한 라이브러리들은 대부분 구현되어 있습니다. 7 | 8 | NVIDIA 이외의 그래픽카드에서 작동하지 않습니다. 따라서 NVIDIA 외의 그래픽카드에 병렬 연산을 시키고 싶다면 OpenCL을 사용하면 됩니다. CUDA와 문법이나 메모리 모델은 비슷한데 코딩하기는 이 쪽이 조금 더 어렵다고 합니다. 애플, 인텔, AMD, ARM등 에서는 NVIDIA를 견제하기 위해 OpenCL을 밀고 있습니다. 9 | 10 | -------------------------------------------------------------------------------- /1.1.-artificial-intelligence/1.5..md: -------------------------------------------------------------------------------- 1 | # 1.5. 머신러닝 2 | 3 | 인간은 학습 \(Learning\) 할 수 있기 때문에 자신의 지식을 계속적으로 확장 시켜 나갈 수 있습니다. 기계학습\(Machine Learning\) 은 인간의 이러한 학습능력을 컴퓨터에 구현하고자 하는 시도입니다. 4 | 5 | 인간의 가장 두드러진 특징은 새로운 것을 배우고 변화하는 환경에 적응할 수 있는 학습능력을 가지고 있다는 것입니이다. 컴퓨터가 학습능력을 가질 수 있다면 지능을 가진 인간과 유사한 적응력을 가질 수 있게될 것입니다. 6 | 7 | 기계 학습 또는 머신 러닝은 인공 지능의 한 분야로, 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야를 말합니한다. 8 | 9 | 1959년, 아서 사무엘은 기계 학습을 “컴퓨터에게 배울 수 있는 능력, 즉 코드로 정의하지 않은 동작을 실행하는 능력에 대한 연구 분야”라고 정의하였습니다. \[위키피디아\] 10 | 11 | 머신 러닝 기술은 명시적으로 프로그래밍하는 것이 아니라 데이터로부터의 학습을 통해 작업을 수행하는 방법을 컴퓨터에 가르치는 것입니이다. 아래 곱하기 계산 예에서 일반적인 프로그램은 입력 숫자와 곱하기 연산자를 활용하여 결과 값을 계산하지만, 머신러닝에서는 입력값 A와 정답 X를 활용하여 스스로 학습하여 조건 B를 찾는다는 것이 다릅니다. 12 | 13 | ![](../.gitbook/assets/15.png) 14 | 15 | -------------------------------------------------------------------------------- /2.-1/1.6./untitled-8.md: -------------------------------------------------------------------------------- 1 | # 2.5.11. CUDA & cuDNN 2 | 3 | 4 | CUDA \("Compute Unified Device Architecture", 쿠다\)는 그래픽 처리 장치\(GPU\)에서 수행하는 \(병렬 처리\) 알고리즘을 C 프로그래밍 언어를 비롯한 산업 표준 언어를 사용하여 작성할 수 있도록 하는 GPGPU 기술입니다. CUDA는 엔비디아\(NVIDIA\)가 개발해오고 있으며 이 아키텍처를 사용하려면 NVIDIA GPU와 특별한 스트림 처리 드라이버가 필요합니다. CUDA는 G8X GPU로 구성된 지포스 8 시리즈급 이상에서 동작합니다. CUDA 플랫폼은 컴퓨터 커널의 실행을 위해 GPU의 가상 명령 집합과 병렬 연산 요소들을 직접 접근할 수 있는 소프트웨어 계층입니다. 5 | 6 | 딥러닝을 도와주는 여러 라이브러리도 CUDA와 함께 제공됩니다. cuDNN, Convolution 연산을 더 빠르게 만들어주는 cuFFT, 선형대수 모듈인 cuBLAS 등 사실상 필요한 라이브러리들은 대부분 구현되어 있습니다. 7 | 8 | NVIDIA 이외의 그래픽카드에서 작동하지 않습니다. 따라서 NVIDIA 외의 그래픽카드에 병렬 연산을 시키고 싶다면 OpenCL을 사용하면 됩니다. CUDA와 문법이나 메모리 모델은 비슷한데 코딩하기는 이 쪽이 조금 더 어렵다고 합니다. 애플, 인텔, AMD, ARM등 에서는 NVIDIA를 견제하기 위해 OpenCL을 밀고 있습니다. 9 | 10 | -------------------------------------------------------------------------------- /3./3.9.-strings/3.9.2..md: -------------------------------------------------------------------------------- 1 | # 3.9.2. 이스케이프 문자 2 | 3 | 이스케이프 문자란 직접 입력할 수 없는 일부 문자를 문자열에 포함시킬 수 있는 특수 문자를 지칭합니다. 4 | 5 | | Backslash notation | Hexadecimal character | Description | 6 | | :--- | :--- | :--- | 7 | | \a | 0x07 | Bell or alert | 8 | | \b | 0x08 | Backspace | 9 | | \cx | | Control-x | 10 | | \C-x | | Control-x | 11 | | \e | 0x1b | Escape | 12 | | \f | 0x0c | Formfeed | 13 | | \M-\C-x | | Meta-Control-x | 14 | | \n | 0x0a | Newline | 15 | | \nnn | | Octal notation, where n is in the range 0.7 | 16 | | \r | 0x0d | Carriage return | 17 | | \s | 0x20 | Space | 18 | | \t | 0x09 | Tab | 19 | | \v | 0x0b | Vertical tab | 20 | | \x | | Character x | 21 | | \xnn | | Hexadecimal notation, where n is in the range 0.9, a.f, or A.F | 22 | 23 | -------------------------------------------------------------------------------- /1./1.6./untitled-7.md: -------------------------------------------------------------------------------- 1 | # 1.6.12. 파이썬 표준 내장 라이브러리 2 | 3 | 4 | 파이썬의 표준 라이브러리는 매우 광범위하며 다양한 기능을 제공합니다. 라이브러리에는 일상적인 프로그래밍에서 발생하는 많은 문제에 대한 표준적인 해결책을 제공하는 파이썬으로 작성된 모듈뿐만 아니라, 파일 I/O와 같은 시스템 기능에 액세스하는 내장 모듈들이 포함됩니다. 5 | 6 | 내장\(Built-in\)이란 파이썬이 기본적으로 제공하는 것으로 import를 이용해 로드하지 않아도 사용할 수 있는 것들입니다. 이 API들은 응용 프로그램이 시스템에 접근 할 수 있는 필수적인 기능을 제공합니다. Built-in 함수들은 객체를 문자로 출력하거나, 절대값을 구하거나, 파일을 제어 할 수 있는 함수와 같이 자주 사용되는 함수들이 여기에 속합니다. 7 | 8 | 파이썬 플랫폼에 기본적으로 내장되어서 제공된다는 점에서 빌트인 라이브러리와 빌트인이 아닌 라이브러리는 같지만 두 라이브러리의 차이점은 빌트인이 로드\(import\)가 필요 없는 반면 빌트인이 아닌 라이브러리는 사용하고자 하는 라이브러리를 명시적으로 로드해야 한다는 점입니다. 파이썬 학습 부분에서 자세히 다루겠습니다. 9 | 10 | 파이썬 프준 라이브러리는 다음 싸이트를 참조하시면 됩니다. 11 | 12 | [https://docs.python.org/ko/3/library/index.html](https://docs.python.org/ko/3/library/index.html) 13 | 14 | -------------------------------------------------------------------------------- /2.-1/1.6./untitled-7.md: -------------------------------------------------------------------------------- 1 | # 2.5.12. 파이썬 표준 내장 라이브러리 2 | 3 | 4 | 파이썬의 표준 라이브러리는 매우 광범위하며 다양한 기능을 제공합니다. 라이브러리에는 일상적인 프로그래밍에서 발생하는 많은 문제에 대한 표준적인 해결책을 제공하는 파이썬으로 작성된 모듈뿐만 아니라, 파일 I/O와 같은 시스템 기능에 액세스하는 내장 모듈들이 포함됩니다. 5 | 6 | 내장\(Built-in\)이란 파이썬이 기본적으로 제공하는 것으로 import를 이용해 로드하지 않아도 사용할 수 있는 것들입니다. 이 API들은 응용 프로그램이 시스템에 접근 할 수 있는 필수적인 기능을 제공합니다. Built-in 함수들은 객체를 문자로 출력하거나, 절대값을 구하거나, 파일을 제어 할 수 있는 함수와 같이 자주 사용되는 함수들이 여기에 속합니다. 7 | 8 | 파이썬 플랫폼에 기본적으로 내장되어서 제공된다는 점에서 빌트인 라이브러리와 빌트인이 아닌 라이브러리는 같지만 두 라이브러리의 차이점은 빌트인이 로드\(import\)가 필요 없는 반면 빌트인이 아닌 라이브러리는 사용하고자 하는 라이브러리를 명시적으로 로드해야 한다는 점입니다. 파이썬 학습 부분에서 자세히 다루겠습니다. 9 | 10 | 파이썬 프준 라이브러리는 다음 싸이트를 참조하시면 됩니다. 11 | 12 | [https://docs.python.org/ko/3/library/index.html](https://docs.python.org/ko/3/library/index.html) 13 | 14 | -------------------------------------------------------------------------------- /3./3.7.-modules/3.7.2.-namespace-scoping.md: -------------------------------------------------------------------------------- 1 | # 3.7.2. 네임스페이스\(Namespace\)와 범위\(Scoping\) 2 | 3 | 변수란 객체에 매핑 되는 이름\(식별자: identifiers\)를 말합니다. 그러나 전체 프로그래밍 공간에서 고유한 이름으로 변수를 구별할 수 없습니다. 프로그래밍언어에서는 네임스페이스\(name space: 이름공간\)라는 개념을 도입하여, 특정한 하나의 이름이 통용될 수 있는 범위를 제한합니다. 파이썬에서도 변수의 유효 범위를 네임스페이스\(namespace\) 기반으로 결정합니다. 따라서 소속된 네임스페이스가 다르다면 같은 이름이 다른 개체를 가리키도록 하는 것이 가능해집니다. 4 | 5 | 파이썬 문은 로컬 네임스페이스와 전역 네임스페이스의 변수에 액세스 할 수 있습니다. 함수의 값이 할당된 변수는 모두 로컬 변수라고 가정합니다. 따라서 함수 내의 전역 변수에 값을 할당하려면 먼저 global 문을 사용해야합니다. 6 | 7 | globals\(\) 및 locals\(\) 함수는 호출된 위치에 따라 전역 및 로컬 네임스페이스의 이름을 반환하는 데 사용할 수 있습니다. locals\(\)가 함수 내에서 호출되면 해당 함수에서 로컬로 액세스 할 수 있는 모든 이름을 반환합니다. globals\(\)가 함수 내에서 호출되면 함수에서 전역적으로 액세스 할 수 있는 모든 이름을 반환합니다. 이 두 함수의 반환 유형은 dictionary입니다. 따라서 keys\(\) 함수를 사용하여 이름을 추출할 수 있습니다. 8 | 9 | -------------------------------------------------------------------------------- /1./1.7./1.7.1.-supervised-learning.md: -------------------------------------------------------------------------------- 1 | # 1.7.1. 지도 학습 \(Supervised Learning\) 2 | 3 | 4 | 예를 들어 학생에게 곱셈을 학습시킬 때, “2\*3=6이고, 2\*4=8이야, 그러면 2\*5= 얼마일까? “ 5 | 6 | 처럼 문제에 대한 정답을 주고 학습을 한 후, 나중에 문제를 줬을 때 정답을 구하도록 하는 것이 지도 학습 \(Supervised Learning\)입니다. 미리 정해 놓은 정답이 있는 데이터인 레이블된 데이터\(Labeled Data\)를 가지고 학습하는 것을 말합니다. 7 | 8 | 지도학습\(Supervised Learning\)은 데이터가 매우 많은 경우에 효과적인 학습이 가능합니다. 9 | 10 | 예측하는 결과값이 이산\(discrete\)값이면 분류\(classification\) 라고 합니다. 즉 1과 0이 있는 숫자 그림을 주고 이 이미지에 해당하는 숫자는 1인가 2인가? 를 예측하는 것입니다. 11 | 12 | 예측하는 결과값이 연속\(continuous\)값이면 회귀\(regression\) 라고 합니다. 즉 3개월뒤 이 아파트 가격은 2억1천만원 일 것인가? 2억2천만원 일 것인가? 와 같은 것을 예측 하는 것입니다. 13 | 14 | 딥러닝에서 Supervised Learning 방법론으로 주로 사용되는 구조는 Convolutional Neural Network\(CNNs\), Recurrent Neural Networks\(RNNs\)입니다. 15 | 16 | -------------------------------------------------------------------------------- /3./3.3./3.3.8.-variables.md: -------------------------------------------------------------------------------- 1 | # 3.3.8. 파이썬 변수\(Variables\) 2 | 3 | 파이썬 변수는 메모리 공간을 예약하기 위해 명시적으로 선언할 필요가 없습니다. 선언은 변수에 값을 할당하면 자동으로 처리됩니다. 등호\(=\)는 변수에 값을 할당하는 데 사용됩니다. 4 | 5 | #### =\(대입연산자\)는 우변의 값을 좌변에 넣으라는 뜻 입니다. 6 | 7 | = 연산자 왼쪽의 피연산자는 변수의 이름이고 = 연산자 오른쪽의 피연산자는 변수에 저장된 값입니다. 예를 들어 8 | 9 | ```text 10 | counter = 100 # An integer assignment 11 | miles = 1000.0 # A floating point 12 | name = "John" # A string 13 | 14 | print counter 15 | print miles 16 | print name 17 | ``` 18 | 19 | 여러 개 변수에 동일한 값을 동시에 할당하려면 다음과 같이 사용합니다. 20 | 21 | ```text 22 | a = b = c = 1 23 | ``` 24 | 25 | 여러 변수에 여러 개 값을 동시에 지정할 수도 있습니다. 예를 들어 26 | 27 | ```text 28 | a,b,c = 1,2,"john" 29 | ``` 30 | 31 | 위의 예에서는 a, b 변수에는 정수 1이 저장되고 c 변수에는 “john"을 갖는 하나의 문자열이 할당됩니다. 32 | 33 | -------------------------------------------------------------------------------- /1./1.6./untitled-14.md: -------------------------------------------------------------------------------- 1 | # 1.6.5. 싸이파이\(SciPy\) 2 | 3 | 4 | SciPy\([https://www.scipy.org/scipylib](https://www.scipy.org/scipylib)\)는 과학 계산용 함수를 모아놓은 파이썬 패키지입니다. 5 | 6 | Numpy와 Scipy는 서로 떨어질 수 없을 정도로 밀접한 관계에 있으며 Scipy를 활용할 때에는 상당히 많이 Numpy를 이용하게 됩니다. 실제로 Scipy에 관한 책을 구매했을 때 책의 앞부분은 Scipy 관련 내용보다는 오히려 Numpy의 기초에 대한 내용 위주로 보게 되는 경우가 많습니다. 7 | 8 | SciPy는 고성능 선형대수, 함수 최적화, 신호 처리, 특수한 수학 함수와 통계 분포 등을 포함한 많은 기능을 제공합니다. scikit-learn은 알고리즘을 구현할 때 SciPy의 여러 함수를 사용합니다. 그 중에서 가장 중요한 기능은 scipy.sparse입니다. 이 모듈은 scikit-learn에서 데이터를 표현하는 또 하나의 방법인 희소 행렬 기능을 제공합니다. 9 | 10 | Scipy는 수치해석을 Numpy를 이용하여 보다 본격적으로 이용할 수 있게 해 줍니다. Scipy를 이용하면 Numpy만으로는 길게 코딩해야 하는 기법들을 단 2~3 줄에 구현할 수 있습니다. 게다가 Numpy로 구현하기 막막하거나 사실상 불가능한 것들도 Scipy로는 쉽게 결과를 얻을 수 있습니다. 따라서 Numpy와 Scipy를 적절하게 혼용하게 되면 더욱 생산성이 높습니다. 11 | 12 | -------------------------------------------------------------------------------- /2.-1/1.6./untitled-14.md: -------------------------------------------------------------------------------- 1 | # 2.5.5. 싸이파이\(SciPy\) 2 | 3 | 4 | SciPy\([https://www.scipy.org/scipylib](https://www.scipy.org/scipylib)\)는 과학 계산용 함수를 모아놓은 파이썬 패키지입니다. 5 | 6 | Numpy와 Scipy는 서로 떨어질 수 없을 정도로 밀접한 관계에 있으며 Scipy를 활용할 때에는 상당히 많이 Numpy를 이용하게 됩니다. 실제로 Scipy에 관한 책을 구매했을 때 책의 앞부분은 Scipy 관련 내용보다는 오히려 Numpy의 기초에 대한 내용 위주로 보게 되는 경우가 많습니다. 7 | 8 | SciPy는 고성능 선형대수, 함수 최적화, 신호 처리, 특수한 수학 함수와 통계 분포 등을 포함한 많은 기능을 제공합니다. scikit-learn은 알고리즘을 구현할 때 SciPy의 여러 함수를 사용합니다. 그 중에서 가장 중요한 기능은 scipy.sparse입니다. 이 모듈은 scikit-learn에서 데이터를 표현하는 또 하나의 방법인 희소 행렬 기능을 제공합니다. 9 | 10 | Scipy는 수치해석을 Numpy를 이용하여 보다 본격적으로 이용할 수 있게 해 줍니다. Scipy를 이용하면 Numpy만으로는 길게 코딩해야 하는 기법들을 단 2~3 줄에 구현할 수 있습니다. 게다가 Numpy로 구현하기 막막하거나 사실상 불가능한 것들도 Scipy로는 쉽게 결과를 얻을 수 있습니다. 따라서 Numpy와 Scipy를 적절하게 혼용하게 되면 더욱 생산성이 높습니다. 11 | 12 | -------------------------------------------------------------------------------- /1./1.7./1.7.3.-reinforcement-learning.md: -------------------------------------------------------------------------------- 1 | # 1.7.3. 강화 학습\(Reinforcement Learning\) 2 | 3 | 4 | 강화 학습\(Reinforcement Learning\)은 앞서 살펴본 지도 학습\(Supervised Learning\)과 비지도 학습\(Unsupervised Learning\)과는 약간은 다른 종류의 학습 알고리즘입니다. 5 | 6 | 다른 알고리즘들이 데이터\(data\)가 주어진 정적인 상태\(static environment\)에서 학습을 진행하였다면, 강화 학습\(Reinforcement Learning\)은 에이전트가 주어진 환경\(state\)에 대해 어떤 행동\(action\)을 취하고 이로부터 어떤 보상\(reward\)을 얻으면서 학습을 진행합니다. 이때, 에이전트는 보상\(reward\)을 최대화\(maximize\)하도록 학습이 진행됩니다. 즉, 강화학습은 일종의 동적인 상태\(dynamic environment\)에서 데이터를 수집하는 과정까지 포함되어 있는 알고리즘입니다. 지도학습은 목표 라벨이 있고 비지도 학습은 라벨이 아예 없는데, 강화학습은 가끔씩 시간이 지연되는 성과\(Reward\) 라벨들을 가지고 있습니다. 상황에 맞는 State, Reward, Environment, Action 등의 최적화된 설계가 구현에서 중요한 항목이 됩니다. 7 | 8 | 강화학습의 대표적인 알고리즘은 Q-Learning이 있고, 딥러닝과 결합하여 Deep-Q-Network\(DQN\) 방법으로도 사용됩니다. 9 | 10 | -------------------------------------------------------------------------------- /2./2.1./2.1.3..md: -------------------------------------------------------------------------------- 1 | # 2.1.3. 케라스 설치 2 | 3 | 4 | Anaconda Prompt에서 앞장에서 생성한, 그리고 텐서플로우가 설치된 가상환경인지를 확인한 후 5 | 6 | >pip install keras 7 | 8 | 를 실행하여 케라스를 설치합니다. Tensorflow 2.x 버전부터는 기본 포함되어 있습니다. 9 | 10 | ![](../../.gitbook/assets/213-1.png) 11 | 12 | 무언가가 설치되지 않았다거나 버전이 맞지 않는다고 나온다면 해결 해야 합니다. 13 | 14 | 제일 먼저 python -m pip install --upgrade pip 를 사용하여 pip 부터 체크해 줍니다. 15 | 16 | ![](../../.gitbook/assets/1150.png) 17 | 18 | 제가 설치할 때는 위와 같은 메시지가 나왔는데 python -m pip install --upgrade pip를 실행한 후 다시 설치하니 해결이 되었습니다. 19 | 20 | Anaconda Prompt 에서 onebook 가상환경인지를 확인한 후 python을 실행합니다. 다음을 코드를 실행 해 봅니다. 21 | 22 | ```text 23 | >>> import keras as k 24 | >>> print(k.__version__) 25 | ``` 26 | 27 | ![](../../.gitbook/assets/213-2.png) 28 | 29 | 출력된 2.2.4 는 현재 내 개발환경에 설치된 케라스의 버전입니다. 30 | 31 | -------------------------------------------------------------------------------- /1./1.6./README.md: -------------------------------------------------------------------------------- 1 | # 1.6. 학습에 필요한 중요한 도구와 라이브러리들 2 | 3 | 4 | 파이썬은 별도의 편집기 프로그램이 없이도 사용할 수 있습니다. 직접 python을 실행하고 입력해도 되고, 메모장에서 복사+붙여넣기 해도 됩니다. 하지만, GUI 편집기 프로그램이 제공하는 다양한 편의성 때문에 GUI 개발환경을 사용 안 할 수가 없습니다. 파이썬의 기본 개발환경인 IDLE은 어디까지나 학습용으로 간편하게 쓸 수 있는 도구일 뿐 실무 개발용으로는 많이 부족합니다. 파이참, 주피터 노트북 등 편리한 개발 환경을 사용하면 개발속도를 높일 수 있고 디버깅 또한 간편해 집니다. 5 | 6 | 파이썬\(Python\)이 프로그래밍 언어로써의 확고한 지위를 차지할 수 있었던 큰 이유 중에 하나가 막강한 라이브러리 모듈입니다. 파이썬의 내장 라이브러리 모듈은 다양한 분야에 걸쳐서 충분한 테스트를 거친 좋은 코드임에도 불구하고 많은 프로그래머가 이를 모르거나 무시하면서 똑같은 또는 유사한 기능을 다시 코딩하는 우를 범하는 경우가 많습니다. 본격적인 프로그래밍에 앞서 구현하려는 기능이 파이썬 라이브러리 모듈에 있는지 꼭 확인해 볼 필요가 있습니다. 7 | 8 | 파이썬은 ‘Numpy’, ‘Pandas’, ‘Matplotlib’ 등 데이터 적재, 시각화, 통계, 자연어 처리, 이미지 처리 등에 필요한 라이브러리를 가지고 있고 ‘PyQT’, ‘wxPython’, ‘Django’, ‘Flask’ 등을 이용하여 GUI, Web 프로그래밍을 할 수 있습니다. 대표적인 라이브러리 모듈도 알아 보기로 합니다. 9 | 10 | -------------------------------------------------------------------------------- /1.1.-artificial-intelligence/1.7./1.7.1.-supervised-learning.md: -------------------------------------------------------------------------------- 1 | # 1.6.1. 지도 학습 \(Supervised Learning\) 2 | 3 | 4 | 예를 들어 학생에게 곱셈을 학습시킬 때, “2\*3=6이고, 2\*4=8이야, 그러면 2\*5= 얼마일까? “ 5 | 6 | 처럼 문제에 대한 정답을 주고 학습을 한 후, 나중에 문제를 줬을 때 정답을 구하도록 하는 것이 지도 학습 \(Supervised Learning\)입니다. 미리 정해 놓은 정답이 있는 데이터인 레이블된 데이터\(Labeled Data\)를 가지고 학습하는 것을 말합니다. 7 | 8 | 지도학습\(Supervised Learning\)은 데이터가 매우 많은 경우에 효과적인 학습이 가능합니다. 9 | 10 | 예측하는 결과값이 이산\(discrete\)값이면 분류\(classification\) 라고 합니다. 즉 1과 0이 있는 숫자 그림을 주고 이 이미지에 해당하는 숫자는 1인가 2인가? 를 예측하는 것입니다. 11 | 12 | 예측하는 결과값이 연속\(continuous\)값이면 회귀\(regression\) 라고 합니다. 즉 3개월뒤 이 아파트 가격은 2억1천만원 일 것인가? 2억2천만원 일 것인가? 와 같은 것을 예측 하는 것입니다. 13 | 14 | 딥러닝에서 Supervised Learning 방법론으로 주로 사용되는 구조는 Convolutional Neural Network\(CNNs\), Recurrent Neural Networks\(RNNs\)입니다. 15 | 16 | -------------------------------------------------------------------------------- /2.-1/1.6./README.md: -------------------------------------------------------------------------------- 1 | # 2.5. 학습에 필요한 중요한 도구와 라이브러리들 2 | 3 | 4 | 파이썬은 별도의 편집기 프로그램이 없이도 사용할 수 있습니다. 직접 python을 실행하고 입력해도 되고, 메모장에서 복사+붙여넣기 해도 됩니다. 하지만, GUI 편집기 프로그램이 제공하는 다양한 편의성 때문에 GUI 개발환경을 사용 안 할 수가 없습니다. 파이썬의 기본 개발환경인 IDLE은 어디까지나 학습용으로 간편하게 쓸 수 있는 도구일 뿐 실무 개발용으로는 많이 부족합니다. 파이참, 주피터 노트북 등 편리한 개발 환경을 사용하면 개발속도를 높일 수 있고 디버깅 또한 간편해 집니다. 5 | 6 | 파이썬\(Python\)이 프로그래밍 언어로써의 확고한 지위를 차지할 수 있었던 큰 이유 중에 하나가 막강한 라이브러리 모듈입니다. 파이썬의 내장 라이브러리 모듈은 다양한 분야에 걸쳐서 충분한 테스트를 거친 좋은 코드임에도 불구하고 많은 프로그래머가 이를 모르거나 무시하면서 똑같은 또는 유사한 기능을 다시 코딩하는 우를 범하는 경우가 많습니다. 본격적인 프로그래밍에 앞서 구현하려는 기능이 파이썬 라이브러리 모듈에 있는지 꼭 확인해 볼 필요가 있습니다. 7 | 8 | 파이썬은 ‘Numpy’, ‘Pandas’, ‘Matplotlib’ 등 데이터 적재, 시각화, 통계, 자연어 처리, 이미지 처리 등에 필요한 라이브러리를 가지고 있고 ‘PyQT’, ‘wxPython’, ‘Django’, ‘Flask’ 등을 이용하여 GUI, Web 프로그래밍을 할 수 있습니다. 대표적인 라이브러리 모듈도 알아 보기로 합니다. 9 | 10 | -------------------------------------------------------------------------------- /1.1.-artificial-intelligence/1.7./1.7.3.-reinforcement-learning.md: -------------------------------------------------------------------------------- 1 | # 1.6.3. 강화 학습\(Reinforcement Learning\) 2 | 3 | 4 | 강화 학습\(Reinforcement Learning\)은 앞서 살펴본 지도 학습\(Supervised Learning\)과 비지도 학습\(Unsupervised Learning\)과는 약간은 다른 종류의 학습 알고리즘입니다. 5 | 6 | 다른 알고리즘들이 데이터\(data\)가 주어진 정적인 상태\(static environment\)에서 학습을 진행하였다면, 강화 학습\(Reinforcement Learning\)은 에이전트가 주어진 환경\(state\)에 대해 어떤 행동\(action\)을 취하고 이로부터 어떤 보상\(reward\)을 얻으면서 학습을 진행합니다. 이때, 에이전트는 보상\(reward\)을 최대화\(maximize\)하도록 학습이 진행됩니다. 즉, 강화학습은 일종의 동적인 상태\(dynamic environment\)에서 데이터를 수집하는 과정까지 포함되어 있는 알고리즘입니다. 지도학습은 목표 라벨이 있고 비지도 학습은 라벨이 아예 없는데, 강화학습은 가끔씩 시간이 지연되는 성과\(Reward\) 라벨들을 가지고 있습니다. 상황에 맞는 State, Reward, Environment, Action 등의 최적화된 설계가 구현에서 중요한 항목이 됩니다. 7 | 8 | 강화학습의 대표적인 알고리즘은 Q-Learning이 있고, 딥러닝과 결합하여 Deep-Q-Network\(DQN\) 방법으로도 사용됩니다. 9 | 10 | -------------------------------------------------------------------------------- /2./2.1./2.1.5./README.md: -------------------------------------------------------------------------------- 1 | # 2.1.6. 파이참 설치 2 | 3 | 4 | 파이참은 JET BRAINS 사에서 제공하는 파이썬 개발을 편하게 해주는 통합 개발 환경입니다. 5 | 6 | 다음의 링크에서 다운 받을 수 있습니다. 7 | 8 | {% embed url="https://www.jetbrains.com/pycharm/download/\#section=windows" %} 9 | 10 | 접속하시면 아래와 같은 화면의 다운로드 페이지가 나옵니다. PyCharm은 유료인 Professional과 무료인 Community가 있습니다. 무료로 제공되는 Community 버전이 있고, 기능이 추가돼 유료로 제공되는 professional 버전이 있습니다. Professional은 Web개발 환경이나 Database 관련 등의 기능을 추가로 제공하지만, 관련된 기능이 없는 Community 무료 버전도 충분한 기능이 제공됩니다. 11 | 12 | ![](../../../.gitbook/assets/2150-1.png) 13 | 14 | 다운로드 후 제가 테스트 했던 때의 최신 버전인 'pycharm-community-2018.3.3.exe'를 실행하여 설치를 진행합니다. 15 | 16 | ![](../../../.gitbook/assets/2150-2.png) 17 | 18 | 지금까지 64bit 환경으로 설치를 진행했으니 파이참도 64bit 만 설치해 줍니다. 19 | 20 | PATH 환경 설정과, Oracle의 JRE를 설치하지 않았다면 Download and Install JRE x86 by JetBrans를 체크해줍니다. 21 | 22 | 나머지 설정들은 기본으로 정해줍니다. 23 | 24 | -------------------------------------------------------------------------------- /3./3.9.-strings/3.9.1.-unicode.md: -------------------------------------------------------------------------------- 1 | # 3.9.1. Unicode 한글의 사용 2 | 3 | 문자 인코딩이란 "특정한 문자 집합 안의 문자들을 컴퓨터 시스템에서 사용할 목적으로 일정한 범위 안의 정수들로 변환하는 방법"을 말합니다. 4 | 5 | 한글이 저장되는 방식은 Unicode, UTF8, EUC-KR, CP949 네 가지가 있는데 유니코드는 문자코드가 각국의 윈도우마다 겹치는 영역이 존재하기 때문에 이러한 현상이 발생하지 않기 위해 전세계 모든 언어에 겹치지 않는 코드를 할당\(=매핑\)한 코드를 말합니다. UTF8은 유니코드 기반의 가변 길이 문자 인코딩 방식을 말합니다. 6 | 7 | 파이썬의 일반 문자열은 내부적으로 8 비트 ASCII로 저장되는 반면, 유니코드 문자열은 16 비트 유니코드로 저장됩니다. 이것은 세계의 대부분의 언어에서 특수 문자를 포함하여 보다 다양한 문자 집합을 허용하기 위함입니다. 유니 코드 문자열은 접두사 u를 사용합니다. 8 | 9 | 만약 여러분이 한글 윈도우에서 작업하고 있다면, system의 location code는 cp949 일 것입니다. 하지만 리눅스일 경우, system의 location code는 UTF-8이 됩니다. 10 | 11 | 파이썬에서 한글을 사용하기 위해서는 변환이 필요합니다. print 함수의 경우 유니코드는 알아서 컴퓨터의 로케일 문자열로 변환해 보여줍니다. 12 | 13 | ```python 14 | import sys 15 | 16 | print(sys.stdin.encoding) 17 | print(u'Hello, world!') 18 | a = u"한글" 19 | print(a) 20 | ``` 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /2./2.1./2.1.1./1.md: -------------------------------------------------------------------------------- 1 | # 1\) 아나콘다 패키지 업데이트 2 | 3 | 4 | 현재 설치된 아나콘다의 버전을 확인해 보겠습니다. 5 | 6 | ```text 7 | (base) C:\Users\사용자계정>conda -–version 8 | ``` 9 | 10 | ![](../../../.gitbook/assets/2111-1.png) 11 | 12 | 아나콘다를 사용하다 보면 아나콘다 자체 및 부속 라이브러리들을 업데이트 해야 할 일이 생기곤 합니다. 그럴 때에는 다음과 같이 하면 쉽게 전체 업데이트를 할 수 있습니다. 13 | 14 | 아나콘다 자체를 최신 버전으로 업데이트 하는 명령은 다음과 같습니다. 15 | 16 | ```text 17 | (base) C:\Users\사용자계정>conda update conda 18 | (base) C:\Users\사용자계정>conda update anaconda 19 | (base) C:\Users\사용자계정>conda update –n base conda 20 | ``` 21 | 22 | ![](../../../.gitbook/assets/2111-2.png) 23 | 24 | 아나콘다의 파이썬 패키지 전체를 업데이트 하는 명령은 다음과 같습니다. 25 | 26 | ```text 27 | (base) C:\Users\사용자계정>conda update --all 28 | ``` 29 | 30 | ![](../../../.gitbook/assets/2111-3.png) 31 | 32 | conda update --all 은 파이썬 패키지 전체를 업데이트 하는 명령인데, 경우에 따라 두 번 실행해야 다 업데이트가 되는 경우가 있으므로 시간이 된다면 한번 더 실행해 줍니다. 33 | 34 | -------------------------------------------------------------------------------- /2.-1/2.6.-ai-3/2.6.2..md: -------------------------------------------------------------------------------- 1 | # 2.6.2. 프로그래밍 기술 2 | 3 | AI의 사고를 맡고 있는 것이 수학이라고 알았습니다. 이때 종이와 펜을 사용하여 계산을 한다면 어떻게 될까요. 수천수만 에 달하는 데이터의 계산을 일일이 반복하고 있자면 날이 저물어버릴 겁니다. 해가 지는 것은 둘째 치고 인생이 끝나버릴지 모릅니다. 그래서 등장하는 것이 ‘프로그램’입니다. 4 | 5 | 수학은 각 분석법과 AI 이론 체계를 배우기 위해 매우 중요하며, 그 이해도를 높여가는 것이 큰 도움이 됩니다. 그러나 그것을 결과물로 만들어 주는 것은 프로그램입니다. 대량의 데이터를 정확하게 취급하는 것도, 유사한 계산을 무수히 반복하는 것도 컴퓨터가 더 잘하는 게 당연합니다. 간단한 것은 Excel 등으로도 충분히 할 수 있지만 어려운 일일수록 ‘프로그래밍’이 필수입니다. 6 | 7 | 현대의 AI 데이터 분석용 프로그래밍 언어는 매우 다루기 쉽게 되어 있으며 이에 따른 시간 절감 효과가 큽니다. 최근에는 "Python"과 "R"이라는 프로그래밍 언어가 데이터 관련 업무에 사용되는 경우가 많으며, 이를 기반으로 머신러닝을 다루는 것이 일반적입니다. AI를 최대한 쉽게 만들기 위해 라이브러리\(필요한 프로그램을 미리 개발하여 누구나 사용할 수 있도록 공개되어 있는 것\)를 다양하게 탑재한 ‘Anaconda’나 ‘Tensor flow’등의 애플리케이션 플랫폼을 사용하면 됩니다. 8 | 9 | "인생을 짧다. 그래서 파이썬을 한다" 라는 말이 있습니다. 예전 복잡한 언어를 배우기 위해 포인트 계산, 메모리 관리등이 필요 없습니다. 파이썬은 직관적인 이해만으로 배울수 있습니다. AI뿐만 아니라 향후 기술의 발전을 따라잡기 위해서라도 'Python'에 도전해 보십시오. 10 | 11 | -------------------------------------------------------------------------------- /2./2.2./2.2.2..md: -------------------------------------------------------------------------------- 1 | # 2.2.2. 텐서플로 설치 2 | 3 | 4 | Anaconda Prompt 에서 onebook 가상환경인지를 확인한 후 텐서플로를 설치합니다. 아나콘다 배포판에는 텐서플로 최신 버전이 늦게 포함되므로 파이썬 기본 패키지 관리자인 pip로 텐서플로를 설치합니다. 일반적으로 CPU만 사용하는 버전은 5 | 6 | >pip install tensorflow 7 | 8 | ![](../../.gitbook/assets/2220.png) 9 | 10 | 물론 GPU 지원을 받는 버전은 >pip install tensorflow-gpu 명령으로 설치해야 합니다. 11 | 12 | 텐서프로가 설치가 정상적으로 완료되면 파이썬을 실행하여 텐서플로가 동작하는지 확인해 봅니다. 13 | 14 | Anaconda Prompt에서 onebook 가상환경인지를 확인한 후 python을 실행합니다. 다음을 코드를 실행 해 봅니다. 파이썬 실행에서 빠져나오는 키는 Ctrl+D 를 누르면 됩니다. 15 | 16 | Activate 17 | 18 | ```text 19 | >>> import tensorflow as tf 20 | >>> print(tf.__version__) 21 | 1.12.0 22 | >>> hello=tf.constant(‘Hello World’) 23 | >>> sess=tf.Session() 24 | >>> print(sess.run(hello)) 25 | b’Hello World’ 26 | >>> 27 | ``` 28 | 29 | 출력된 1.12.0 은 현재 내 개발환경에 설치된 텐서플로의 버전이고 b’Hello world’는 printf 텐서플로의 세션을 실행하여 출력 된 문자입니다. 30 | 31 | -------------------------------------------------------------------------------- /3./3.3./3.3.3.-identifiers.md: -------------------------------------------------------------------------------- 1 | # 3.3.3. 파이썬 식별자\(Identifiers\) 2 | 3 | 4 | 파이썬 식별자는 변수, 함수, 클래스, 모듈 또는 다른 객체를 식별하는데 사용되는 이름을 뜻합니다. 식별자는 문자 A부터 Z 또는 a에서 z 또는 밑줄 \(\_\)로 시작하며 한 개 또는 그 이상의 문자로 구성됩니다. 파이썬에서는 @, $, %와 같은 특수 문자를 식별자 내에서 사용할 수 없습니다. 파이썬은 대소 문자를 구별하는 프로그래밍 언어이기 때문에 Manpower와 manpower는 Python에서 두 개의 다른 식별자로 처리됩니다. 다음은 Python 식별자의 명명 규칙입니다. 5 | 6 | * 클래스 이름은 대문자로 시작합니다. 다른 모든 식별자는 소문자로 시작합니다. 7 | * 1개의 밑줄로 시작: 내부적으로 사용되는 변수입니다. 8 | * 1개의 밑줄로 종료: 파이썬 기본 키워드와 충돌을 피하려고 사용됩니다. 9 | * 2개의 밑줄로 시작: 클래스 속성으로 사용합니다. 10 | * 2개의 밑줄로 종료: 사용자가 조정할 수 있는 네임스페이스 안의 속성입니다. 11 | * 식별자는 숫자로 시작될 수 없다. 1variable은 오류이지만 variable1 은 괜찮다. 12 | * 키워드는 식별자로 사용할 수 없다. 13 | * !, @, \#, $, % 등 특수 기호는 우리 식별자에서 사용할 수 없다. 14 | * 식별자의 길이는 제한이 없다. 15 | 16 | python3에서는 유니코드 문자를 식별자로 사용할 수 있습니다. 즉, 한글로도 변수명을 지을 수 있지만 권장되지는 않는다고 합니다. 17 | 18 | -------------------------------------------------------------------------------- /1./1.7./README.md: -------------------------------------------------------------------------------- 1 | # 1.7. 머신러닝 알고리즘 2 | 3 | 4 | 머신러닝은 제공되는 데이터를 기반으로 컴퓨터를 학습시켜서 무언가를 예측하게 만드는 기법입니다. 5 | 6 | 즉 컴퓨터에게 여러가지 예제 데이터를 주고 스스로 학습하여 프로그램을 작성하도록 하자는 것입니다. 7 | 8 | 머신 러닝 알고리즘은 크게 세가지 분류로 나눌 수 있습니다. 바로, 지도 학습\(Supervised Learning\), 비지도 학습\(Unsupervised Learning\), 강화 학습\(Reinforcement Learning\)입니다. 9 | 10 | ![http://solarisailab.com/archives/1785](../../.gitbook/assets/170.jpg) 11 | 12 | 머신러닝, 딥러닝의 이론적인 이해를 하려면 김성훈님의 Youtube “모두를 위한 딥러닝” 강좌를 반드시 공부하기를 바랍니다. 13 | 14 | 강의: [https://www.youtube.com/playlist?list=PLlMkM4tgfjnLSOjrEJN31gZATbcj\_MpUm](https://www.youtube.com/playlist?list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm) 15 | 16 | 소스: [https://github.com/hunkim/ml](https://github.com/hunkim/ml) 17 | 18 | 정리: [https://hunkim.github.io/ml/](https://hunkim.github.io/ml/) 19 | 20 | [https://aileen93.tistory.com/48?category=769137](https://aileen93.tistory.com/48?category=769137) 21 | 22 | -------------------------------------------------------------------------------- /3./README.md: -------------------------------------------------------------------------------- 1 | # 3. 파이썬 기초 학습 2 | 3 | 4 | 파이썬은 이전보다 더 인기있으며, 백엔드 웹서버에서 프론트엔드 게임 개발까지 어디서나 사용되고 있습니다. 파이썬은 정말 일반적인 목적의 언어이며 자존심 있는 프로그래머의 무기 중 필수 툴입니다. 두 가지 버전의 파이썬이 있다: 파이썬 2.7과 파이썬 3.x. 어느 것을 선택할지는 크게 중요하지 않습니다. 입문자에게는 특히, 차이점이 미미합니다. 알아야 한다면, 파이썬 2는 서드파티 지원이 훨씬, 훨씬 더 많고, 파이썬 3는 언어를 설계하는 것이 개발자들의 주요 초점입니다. 5 | 6 | 머신러닝과 딥러닝 그리고 데이터 분석 작업은 반복 작업을 빠르게 처리하고 손쉽게 조작할 수 있는 도구가 필요 합니다. 가장 적합한 도구로 선택되고 있는 것이 바로 파이썬입니다. 머신러닝, 딥러닝을 제대로 공부하고 싶다면 다른 프로그래밍 언어보다 파이썬을 공부하는 것이 훨씬 유리합니다. 파이썬의 딥러닝/머신러닝 관련 라이브러리들은 다른 언어에서 따라올 수 없는 부분입니다. 7 | 8 | 파이썬과 관련된 기본적인 언어 소개는 이 문서 [\[1.2 파이썬\]](https://sdc-james.gitbook.io/onebook/~/drafts/-LbVmyAr2J2fPbec8YAw/primary/1./1.2-python)을 참고하시기 바랍니다. 9 | 10 | 파이썬을 공부하기 위해서는 python.org의 공식 문서\([https://docs.python.org/](https://docs.python.org/)\) 보다 더 나은 정보 소스를 찾을 수 없습니다. 11 | 12 | 예제를 위해 사용한 파이썬 및 IDE는 64bit 윈도우에 설치된 아나콘다 및 파이참을 사용하였습니다. 여기에서는 간단한 기초 문법만을 알아봅니다. 라이브러리, 모듈 등의 자세한 내용은 필요할 때 마다 공부 하기로 합니다. 13 | 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: 서론 3 | --- 4 | 5 | # 한곳에서 끝내는 파이썬 & 머신러닝 & 딥러닝 6 | 7 | 이 문서는 초보자들이 쉽게 딥러닝 및 파이썬을 공부하기 위해 만든 문서 입니다. 제가 이 공부를 체계없이 시작하여 많은 오류를 범하였고, 또한 이곳 저곳을 돌아다니며 여러 자료들을 참고 하느라 많은 시간이 걸려서 다른 분들은 한곳에서 쉽게 접근 할 수 있도록 제 나름대로 체계를 잡은 것입니다. 8 | 9 | 제 지식이 미천하여 많은 내용 오류가 있습니다. 오류에 대한 지적은 권경혁\( [**onebook2james@gmail.com**](mailto:onebook2james@gmail.com) \)로 이메일을 주시면 성실히 답하겠습니다. 또한 여러 싸이트에서 발췌한 자료가 많이 있습니다만 제가 정리하면서 원본 인용 표기가 누락된 곳도 있을 것이니 양해해 주시기 바랍니다. 10 | 11 | 12 | 13 | 계속 읽으시려면 아래 → 화살표를 누르시면 됩니다. 14 | 15 | 16 | 17 | 이 문서는 [GitBook](https://sdc-james.gitbook.io/onebook/) 과 [GitHub](https://github.com/nainsys/PythonDeepLearning) 에서 읽을 수 있습니다. 18 | 19 | GitBook URL : [https://sdc-james.gitbook.io/onebook/](https://sdc-james.gitbook.io/onebook/) 20 | 21 | GitHub URL : [https://github.com/nainsys/PythonDeepLearning/blob/master/SUMMARY.md](https://github.com/nainsys/PythonDeepLearning/blob/master/SUMMARY.md) 22 | 23 | -------------------------------------------------------------------------------- /5./6.1./README.md: -------------------------------------------------------------------------------- 1 | # 6.1. 형태소 분석 2 | 3 | 이 글은 ratsgo 블로그\([ https://ratsgo.github.io/](https://ratsgo.github.io/korean%20linguistics/2017/03/20/morpheme/)\)를 참고해 작성했음을 먼저 밝힙니다. 4 | 5 | 자연 언어 처리에서 말하는 형태소 분석이란 어떤 대상 어절을 최소의 의미 단위인 '형태소'로 분석하는 것을 의미합니다. 형태소는 단어 그 자체가 될 수도 있고, 일반적으로는 단어보다 작은 단위를 말합니다. 형태소란 의미를 가지는 최소 단위로 정의됩니다. 더 쪼개면 뜻을 잃어버리는 말의 단위라고 할 수 있습니다. 6 | 7 | 다음의 예를 보겠습니다. 8 | 9 | `철수가 밥을 먹었다.` 10 | 11 | 위의 예시에서 ‘철수’를 ‘철’과 ‘수’로 쪼개면 ‘철수’라는 사람을 지칭하는 의미가 없어집니다. 마찬가지로 ‘밥’을 ‘ㅂ’과 ‘압’으로 나누면 먹는 밥\(rice\)의 뜻이 사라지게 됩니다. 이런 점에서 ‘철수’와 ‘밥’은 형태소라고 할 수 있습니다. 12 | 13 | 수많은 형태소 분석 라이브러리들이 오픈소스로 배포되고 있습니다. 이러한 라이브러리를 이용하면 직접 사전을 준비하고, 형태소 분석 알고리즘을 구현하지 않아도 형태소 분석을 할 수 있습니다. 14 | 15 | 많은 분들이 한국어 형태소 분석에 매진해 오셨고, 정말 감사하게도 오픈소스로 만들어주셔서 많은 사람들이 편리하게 사용하고 있습니다. 특히 KoNLPy\([https://konlpy-ko.readthedocs.io/ko/v0.4.3/](https://konlpy-ko.readthedocs.io/ko/v0.4.3/)\)는 시중에 공개된 꼬꼬마, 코모란, 트위터, 한나눔, 은전한닢 다섯개 형태소 분석기를 한꺼번에 묶어서 편리하게 사용할 수 있도록 한 패키지입니다. 16 | 17 | -------------------------------------------------------------------------------- /1.1.-artificial-intelligence/1.8..md: -------------------------------------------------------------------------------- 1 | # 1.8. 딥러닝 2 | 3 | 딥러닝은 인간의 신경망을 본 딴 인공 신경망에서 발전한 개념 입니다. 4 | 5 | 뇌의 뉴런과 유사한 정보 입출력 계층을 활용해 데이터를 학습합니다. 딥러닝은 머신러닝을 실현하기 위한 여러가지 방법 중 한 가지이며, 하위 개념이 됩니다. 딥러닝은 인공신경망에 기반을 둔 머신러닝 기술의 한 종류입니이다. 신경망은 굉장한 양의 연산을 필요로 하는 탓에 딥러닝의 상용화는 초기에 어려웠으나, 2012년 이후에는 하드웨어 성능의 폭발적 향상, 알고리즘 향상, 인터넷 성장에 따른 데이터셋 수집의 용이성 등으로 인해 진정한 딥러닝 기반 인공 지능의 등장하게 되었습니다. 6 | 7 | 딥러닝의 ‘딥‘이란 단어가 어떤 깊은 통찰을 얻을 수 있다는 것을 의미하지는 않습니는다. 그냥 연속된 층으로 표현을 학습한다는 개념을 나타 냅니낸다. 레이어를 거치면서 신뢰도가 높아진다는 개념입니다. 8 | 9 | 대부분의 딥러닝 방식은 인공신경망 아키텍처를 사용하는데, 이런 이유로 딥러닝 모델은 종종 **심층 신경망**으로 불립니다. 10 | 11 | “딥”이라는 용어는 뉴럴 네트워크를 구성하는 숨겨진 레이어\(Hidden Layer\)의 수를 가리킵니다. 기존 뉴럴 네트워크는 숨겨진 레이어가 2-3개에 불과하지만 딥 네트워크는 수백개까지 이르는 경우도 있습니다. 12 | 13 | 딥러닝의 개념을 포함하고 있는 것이 머신러닝이기 때문에 칼로 그은 듯 서로를 구분할 수는 없지만, 업계에서는 인공지능을 이야기할 때 머신러닝보다는 딥러닝이라는 용어를 더 많이 사용하고 있습니다. 현재까지로는 딥러닝 방식\(즉, 레이어를 지나면서 데이터를 처리하는 방식\)이 밝혀진 머신러닝 방법 중에는 가장 정확도가 높은 방법이기 때문입니다. 14 | 15 | ![](../.gitbook/assets/180.png) 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /1.1.-artificial-intelligence/1.7./README.md: -------------------------------------------------------------------------------- 1 | # 1.6. 머신러닝 알고리즘 2 | 3 | 4 | 머신러닝은 제공되는 데이터를 기반으로 컴퓨터를 학습시켜서 무언가를 예측하게 만드는 기법입니다. 5 | 6 | 즉 컴퓨터에게 여러가지 예제 데이터를 주고 스스로 학습하여 프로그램을 작성하도록 하자는 것입니다. 7 | 8 | 머신 러닝 알고리즘은 크게 세가지 분류로 나눌 수 있습니다. 바로, 지도 학습\(Supervised Learning\), 비지도 학습\(Unsupervised Learning\), 강화 학습\(Reinforcement Learning\)입니다. 9 | 10 | ![http://solarisailab.com/archives/1785](../../.gitbook/assets/170.jpg) 11 | 12 | 머신러닝, 딥러닝의 이론적인 이해를 하려면 김성훈님의 Youtube “모두를 위한 딥러닝” 강좌를 반드시 공부하기를 바랍니다. 13 | 14 | 강의: [https://www.youtube.com/playlist?list=PLlMkM4tgfjnLSOjrEJN31gZATbcj\_MpUm](https://www.youtube.com/playlist?list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm) 15 | 16 | 소스: [https://github.com/hunkim/ml](https://github.com/hunkim/ml) 17 | 18 | 정리: [https://hunkim.github.io/ml/](https://hunkim.github.io/ml/) 19 | 20 | [https://aileen93.tistory.com/48?category=769137](https://aileen93.tistory.com/48?category=769137) 21 | 22 | -------------------------------------------------------------------------------- /1.1.-artificial-intelligence/1.1.2.-4.md: -------------------------------------------------------------------------------- 1 | # 1.2. 4차 산업혁명 2 | 3 | 흔히 요즘을 4차산업혁명 시대라고 합니다. 4 | 5 | 1차 산업 혁명 시대는 동력원이 석탄이었고 핵심 기술은 증기기관이었습니다. 6 | 7 | 2차 산업 혁명 시대는 동력원이 석유와 전기로 확장되었고, 8 | 9 | 3차 산업 혁명 시대는 컴퓨터와 인터넷으로 상징되는 신기술이 시대의 아이콘이 되었습니다. 10 | 11 | 4차 산업 혁명이란 무엇일까요? 동일한 맥락으로 말하자면 석탄이나 석유에 해당하는 동력원은 빅데이터 그리고 그러한 빅데이터로 움직이는 핵심 기반 기술이 인공지능인 시대를 말합니다. 12 | 13 | 4차 산업혁명이란 인공지능, 사물 인터넷, 빅데이터, 모바일 등 첨단 정보통신 기술이 경제,사회 전반에 융합되어 혁신적인 변화가 나타나는 혁명입니다. 초연결과 초지능을 특징으로 하기 때문에 기존 산업 혁명에 비해 더 넓은 범위와 더 빠른 속도로 크게 영향을 끼칩다. 14 | 15 | 인공지능이란 인간의 여러 신체 부위를 물리적으로 대신하던 기계가 결국 인간의 뇌마저 대신하게 되었다는 의미입니다. 그런데 여기에 빅데이터가 가세하면 개인의 뇌를 넘어 세계적인 집단 지성의 완성이라는 의미로 확장될 수 있습다. 16 | 17 | 빅데이터를 넣으면 인공지능이 이를 통합해서 새로운 정보를 창출하고 이를 토대로 예전에 없던 강력한 초연결 사회를 만든다는 개념입니다. 18 | 19 | 사실 인공지능이란 인간의 팔, 다리 등 여러 신체 부위를 물리적으로 대신하던 기계가 결국 인간의 뇌마저 대신하게 되었다는 의미입니다. 20 | 21 | 그런데 여기에 빅데이터가 가세하면 개인의 뇌를 넘어 세계적인 집단 지성의 완성이라는 의미로 확장될 수 있습니다. 22 | 23 | 다시 말해 “빅데이터 + 인공지능”이라는 도식은 전 인류의 뇌라는 상징적인 의미로 진화할 잠재력을 내포하고 있다는 것입니다. 24 | 25 | -------------------------------------------------------------------------------- /1./1.1.-artificial-intelligence/1.1.2.-4.md: -------------------------------------------------------------------------------- 1 | # 1.1.2. 4차 산업혁명 2 | 3 | 흔히 요즘을 4차산업혁명 시대라고 합니다. 4 | 5 | 1차 산업 혁명 시대는 동력원이 석탄이었고 핵심 기술은 증기기관이었습니다. 6 | 7 | 2차 산업 혁명 시대는 동력원이 석유와 전기로 확장되었고, 8 | 9 | 3차 산업 혁명 시대는 컴퓨터와 인터넷으로 상징되는 신기술이 시대의 아이콘이 되었습니다. 10 | 11 | 4차 산업 혁명이란 무엇일까요? 동일한 맥락으로 말하자면 석탄이나 석유에 해당하는 동력원은 빅데이터 그리고 그러한 빅데이터로 움직이는 핵심 기반 기술이 인공지능인 시대를 말합니다. 12 | 13 | 4차 산업혁명이란 인공지능, 사물 인터넷, 빅데이터, 모바일 등 첨단 정보통신 기술이 경제,사회 전반에 융합되어 혁신적인 변화가 나타나는 혁명입니다. 초연결과 초지능을 특징으로 하기 때문에 기존 산업 혁명에 비해 더 넓은 범위와 더 빠른 속도로 크게 영향을 끼칩다. 14 | 15 | 인공지능이란 인간의 여러 신체 부위를 물리적으로 대신하던 기계가 결국 인간의 뇌마저 대신하게 되었다는 의미입니다. 그런데 여기에 빅데이터가 가세하면 개인의 뇌를 넘어 세계적인 집단 지성의 완성이라는 의미로 확장될 수 있습다. 16 | 17 | 빅데이터를 넣으면 인공지능이 이를 통합해서 새로운 정보를 창출하고 이를 토대로 예전에 없던 강력한 초연결 사회를 만든다는 개념입니다. 18 | 19 | 사실 인공지능이란 인간의 팔, 다리 등 여러 신체 부위를 물리적으로 대신하던 기계가 결국 인간의 뇌마저 대신하게 되었다는 의미입니다. 20 | 21 | 그런데 여기에 빅데이터가 가세하면 개인의 뇌를 넘어 세계적인 집단 지성의 완성이라는 의미로 확장될 수 있습니다. 22 | 23 | 다시 말해 “빅데이터 + 인공지능”이라는 도식은 전 인류의 뇌라는 상징적인 의미로 진화할 잠재력을 내포하고 있다는 것입니다. 24 | 25 | -------------------------------------------------------------------------------- /1.1.-artificial-intelligence/1.1.1.md: -------------------------------------------------------------------------------- 1 | # 1.1. 인공지능이란 도대체 무엇인가? 2 | 3 | 인공지능을 알기 위해서는 먼저 지능이 무엇인지 알아야 합니다. 4 | 5 | 존스홉킨스 대학의 석좌교수 이대열 교수의 말을 빌리자면 지능이란 ‘다양한 환경에서 문제를 해결하는 능력’이라고 정의할 수 있습니다. 6 | 7 | 이렇게 정의하면 인간 뿐만 아니라 거의 모든 생명체가 지능을 갖고 있다고 할 수 있습니다. 8 | 9 | 왜냐하면 동물은 말할 것도 없고 식물이나 심지어 미생물 조차도 어떤 문제에 봉착해서 이를 해결할 수 있는 진화적 능력을 갖고 있기 때문입니다. 10 | 11 | 이를 자연지능이라고 한다면, 인공지능이란 이러한 자연지능의 본질을 규명해서 이를 인공적으로 구현한 것을 말합니다. 12 | 13 | 사실 인공지능을 과학적으로 정의하면 ‘지능을 모방해서 특정한 문제를 풀기위한 기술’인데 이를 **약한 인공지능**이라고 합니다. 14 | 15 | 그렇다면 여기서 한걸음 더 나아가 ‘인간처럼 생각하고 감정과 의식을 가지며 창의성을 발휘하는 기계’는 **강한 인공지능**이라고 말 할 수 있습니다. 16 | 17 | 현재 많은 과학자나 공학자 들이 이야기하는 인공지능은 지능이라는 본연의 의미에 충실한 약한 인공지능이라 할 수 있습니다. 강한 인공지능 또는 인간의 수준을 넘어서는 초지능 보다는 약한 인공지능이라는 보다 현실적인 관점에서 이야기합니다. 18 | 19 | ### 강 인공지 20 | 21 | * 다양한 분야에서 보편적으로 활용 22 | * 알고리즘을 설계하면 AI가 스스로 데이터를 찾아 학습 23 | * 정해진 규칙을 벗어나 능동적으로 학습해 가며 창조 가 24 | 25 | ### 약 인공지능 26 | 27 | * 특정 분야에서만 활용가능 28 | * 알고리즘은 물론 기초 데이터, 규칙들을 입력해야 함 29 | * 입력된 데이터, 규칙을 바탕으로만 학습 가능 30 | * 규칙을 벗어난 창조는 불가 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /1./1.1.-artificial-intelligence/1.1.1.md: -------------------------------------------------------------------------------- 1 | # 1.1.1. 인공지능이란 도대체 무엇인가? 2 | 3 | 인공지능을 알기 위해서는 먼저 지능이 무엇인지 알아야 합니다. 4 | 5 | 존스홉킨스 대학의 석좌교수 이대열 교수의 말을 빌리자면 지능이란 ‘다양한 환경에서 문제를 해결하는 능력’이라고 정의할 수 있습니다. 6 | 7 | 이렇게 정의하면 인간 뿐만 아니라 거의 모든 생명체가 지능을 갖고 있다고 할 수 있습니다. 8 | 9 | 왜냐하면 동물은 말할 것도 없고 식물이나 심지어 미생물 조차도 어떤 문제에 봉착해서 이를 해결할 수 있는 진화적 능력을 갖고 있기 때문입니다. 10 | 11 | 이를 자연지능이라고 한다면, 인공지능이란 이러한 자연지능의 본질을 규명해서 이를 인공적으로 구현한 것을 말합니다. 12 | 13 | 사실 인공지능을 과학적으로 정의하면 ‘지능을 모방해서 특정한 문제를 풀기위한 기술’인데 이를 **약한 인공지능**이라고 합니다. 14 | 15 | 그렇다면 여기서 한걸음 더 나아가 ‘인간처럼 생각하고 감정과 의식을 가지며 창의성을 발휘하는 기계’는 **강한 인공지능**이라고 말 할 수 있습니다. 16 | 17 | 현재 많은 과학자나 공학자 들이 이야기하는 인공지능은 지능이라는 본연의 의미에 충실한 약한 인공지능이라 할 수 있습니다. 강한 인공지능 또는 인간의 수준을 넘어서는 초지능 보다는 약한 인공지능이라는 보다 현실적인 관점에서 이야기합니다. 18 | 19 | ### 강 인공지 20 | 21 | * 다양한 분야에서 보편적으로 활용 22 | * 알고리즘을 설계하면 AI가 스스로 데이터를 찾아 학습 23 | * 정해진 규칙을 벗어나 능동적으로 학습해 가며 창조 가 24 | 25 | ### 약 인공지능 26 | 27 | * 특정 분야에서만 활용가능 28 | * 알고리즘은 물론 기초 데이터, 규칙들을 입력해야 함 29 | * 입력된 데이터, 규칙을 바탕으로만 학습 가능 30 | * 규칙을 벗어난 창조는 불가 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /1./1.2.-python.md: -------------------------------------------------------------------------------- 1 | # 1.3. 아나콘다\(Anaconda\) 2 | 3 | 4 | 아나콘다는 컨티눔\(Continuum Analytics\)이라는 회사에서 만든 파이썬 배포판으로, 수백 개의 파이썬 패키지를 포함하고 있습니다. 또한 회사 내에서도 상업용으로 무료로 사용할 수 있다는 장점이 있습니다. 여러 가지 파이썬 배포판 중 가장 후발주자이지만 가장 뛰어난 완성도로 현재는 사실상의 표준 배포판으로 되어가고 있습니다. 아나콘다는 패키지 의존성을 관리해주므로 가상환경에 따라 독립적으로 패키지를 관리할 수 있습니다. 5 | 6 | 파이썬은 파이썬 공식 홈페이지에서 받을 수 있으며, pip 툴만을 포함하고 있습니다. 필요한 패키지나 라이브러리 등을 설치할 때 모두 수동으로 해줘야 합니다. 그러나 아나콘다는 파이썬 기본 패키지에 각종 수학/과학 라이브러리들을 같이 패키징해서 배포하는 개발 플랫폼이라고 볼 수 있습니다. 7 | 8 | 아나콘다에 포함된 툴들로는 대표적으로 panda, numpy, scipy, sklearn, matplotlib, Jupyter Notebook 등이 있습니다. 9 | 10 | ![https://www.anaconda.com/distribution/](../.gitbook/assets/130.png) 11 | 12 | 일반적으로 파이썬으로 프로그래밍을 할 때 아나콘다를 사용하지 않아도 무방합니다. 그러나 파이썬을 계속하다 보면 아나콘다 없이 사용하기는 불편한 경우가 많이 발생합니다. 특정 라이브러리가 파이썬 버전에 종속되는 경우가 있습니다. 가령 텐서플로우 윈도우버전은 파이썬 3.5버전 까지만 있습니다. 이런 문제들을 해결하는 방법 중 가장 편한 방법이 아나콘다를 사용하는 것입니다. 아나콘다의 가장 큰 장점은 각 프로젝트 별로 개발 환경을 구성 할 수 있다는 것입니다. 하나의 PC에서 목적에 따라 여러 개의 독립적인 개발환경을 구성하여 프로그램을 개발할 수 있으며, 해당 프로그램의 의존성을 보다 명확하게 할 수 있다는 장점도 있습니다. 13 | 14 | -------------------------------------------------------------------------------- /2./2.1./2.1.4..md: -------------------------------------------------------------------------------- 1 | # 2.1.4. 장고 설치 2 | 3 | 4 | Djano는 보안이 우수하고 유지보수가 편리한 웹사이트를 신속하게 개발하는 하도록 도움을 주는 파이썬 웹 프레임워크입니다. 5 | 6 | 장고 버전은 Python 2.7 이하를 사용한다면 Django 1.11을 설치해야 하고 Python 3.x 버전을 사용한다면 Django 2.1.7을 설치해야 합니다. 7 | 8 | Anaconda Prompt에서 onebook 가상환경인지를 확인한 후 9 | 10 | ```text 11 | >pip install Django==2.1.7 12 | ``` 13 | 14 | 를 실행하여 장고를 설치합니다. 장고 영문 표기에 D가 대문자이고, 설치버전을 지정할 때 == 두 개를 사용해야 합니다. 15 | 16 | 장고 설치가 정상적으로 완료되었다면 장고 웹 프레임워크가 동작 하는지 확인해 봅니다. 17 | 18 | ```text 19 | >django-admin startproject djangotest . 20 | ``` 21 | 22 | 위의 명령을 실행해 줍니다. 명령 끝에 . \(점\)을 입력하는 것은 현재 디렉토리에 장고를 설치하라고 스크립트에 알려주는 축약된 표시입니다. 이 명령으로 윈도우 사용자 기본 폴더에 djangotest 라는 폴더가 생성 되었으며 manage.py , settings.py 같은 파일도 자동으로 생성됩니다. 생성된 웹사이트를 확인 하려면 다음의 명령을 실행합니다. 23 | 24 | ```text 25 | > python manage.py runserver 26 | ``` 27 | 28 | ![](../../.gitbook/assets/214-1.png) 29 | 30 | 웹브라우저에서 주소창에 [http://127.0.0.1:8000/](http://127.0.0.1:8000/)을 입력하면 아래와 같은 웹 페이지를 볼 수 있습니다. 31 | 32 | ![](../../.gitbook/assets/214-2.png) 33 | 34 | -------------------------------------------------------------------------------- /2.-1/1./1.2.-python.md: -------------------------------------------------------------------------------- 1 | # 2.1.5. 아나콘다\(Anaconda\) 2 | 3 | 4 | 아나콘다는 컨티눔\(Continuum Analytics\)이라는 회사에서 만든 파이썬 배포판으로, 수백 개의 파이썬 패키지를 포함하고 있습니다. 또한 회사 내에서도 상업용으로 무료로 사용할 수 있다는 장점이 있습니다. 여러 가지 파이썬 배포판 중 가장 후발주자이지만 가장 뛰어난 완성도로 현재는 사실상의 표준 배포판으로 되어가고 있습니다. 아나콘다는 패키지 의존성을 관리해주므로 가상환경에 따라 독립적으로 패키지를 관리할 수 있습니다. 5 | 6 | 파이썬은 파이썬 공식 홈페이지에서 받을 수 있으며, pip 툴만을 포함하고 있습니다. 필요한 패키지나 라이브러리 등을 설치할 때 모두 수동으로 해줘야 합니다. 그러나 아나콘다는 파이썬 기본 패키지에 각종 수학/과학 라이브러리들을 같이 패키징해서 배포하는 개발 플랫폼이라고 볼 수 있습니다. 7 | 8 | 아나콘다에 포함된 툴들로는 대표적으로 panda, numpy, scipy, sklearn, matplotlib, Jupyter Notebook 등이 있습니다. 9 | 10 | ![https://www.anaconda.com/distribution/](../../.gitbook/assets/130.png) 11 | 12 | 일반적으로 파이썬으로 프로그래밍을 할 때 아나콘다를 사용하지 않아도 무방합니다. 그러나 파이썬을 계속하다 보면 아나콘다 없이 사용하기는 불편한 경우가 많이 발생합니다. 특정 라이브러리가 파이썬 버전에 종속되는 경우가 있습니다. 가령 텐서플로우 윈도우버전은 파이썬 3.5버전 까지만 있습니다. 이런 문제들을 해결하는 방법 중 가장 편한 방법이 아나콘다를 사용하는 것입니다. 아나콘다의 가장 큰 장점은 각 프로젝트 별로 개발 환경을 구성 할 수 있다는 것입니다. 하나의 PC에서 목적에 따라 여러 개의 독립적인 개발환경을 구성하여 프로그램을 개발할 수 있으며, 해당 프로그램의 의존성을 보다 명확하게 할 수 있다는 장점도 있습니다. 13 | 14 | -------------------------------------------------------------------------------- /5./README.md: -------------------------------------------------------------------------------- 1 | # 6. 간단한 챗봇 만들기 2 | 3 | 자연어\(natural language\)란 우리가 일상 생활 속에서 사용하는 언어를 말합니다. 자연어 처리\(NLP: Natural Language Processing\)란 이러한 자연어를 의미를 분석하여 컴퓨터가 처리할 수 있도록 하는 일을 말합니다. 4 | 5 | 자연어 처리는 음성 인식, 내용 요약, 번역, 사용자의 감정 분석, 텍스트 분류 작업\(스팸 메일 분류, 뉴스 기사 카테고리 분류\), 질의 응답 시스템, 챗봇과 같은 곳에서 사용되는 연구 분야입니다. 자연 언어 처리는 연구 대상이 언어 이기 때문에 당연하게도 언어 자체를 연구하는 언어학과 언어 현상의 내적 기재를 탐구하는 언어 인지 과학과 연관이 깊습니다. 구현을 위해 수학적 통계적 도구를 많이 활용하며 특히 머신러닝 도구를 많이 사용하는 대표적인 분야입니다. 6 | 7 | 자연어 처리는 머신러닝\(ML\)을 통해 더욱 쉽게 처리할 수 있습니다. 챗봇은 카카오톡, 슬랙, 마이크로소프트 메신저, 그리고 기타 언어를 읽을 수 있는 챗 프로그램들과 결합하여 키워드를 말하면 활성화됩니다. ‘챗봇’ 혹은 ‘상담 로봇’ 개발에 가장 중요한 학문이 자연어 처리 기술입니다. 자연어 처리 특히 한국어 자연어 처리는 많이 복잡해서 아직까지 많은 기술적 난제를 가지고 있습니다. 8 | 9 | 실제 챗봇을 만들기 위해서는 많은 학습 데이터와 프로그래밍이 필요합니다. 빠르게 개발하기 위해서는 Naver ChatBot API\([https://www.ncloud.com/product/aiService/chatbot](https://www.ncloud.com/product/aiService/chatbot)\) , 단비 API \([https://doc.danbee.ai/index.html](https://doc.danbee.ai/index.html)\) 등과 같은 상용 라이브러리를 사용하는 것이 더 빠른 방법일수 있습니다. 10 | 11 | 본 문서에서는 챗봇을 개발하는 개념 이해를 위주로 설명하겠습니다. 12 | 13 | -------------------------------------------------------------------------------- /1.1.-artificial-intelligence/1.3..md: -------------------------------------------------------------------------------- 1 | # 1.3. 인공지능의 역사 2 | 3 | 인공지능은 갑자기 생긴 분야가 아닙니다. 1950년대부터 시작된 학문입니이다. 인공지능을 더 깊이 이해하려면 인공지능의 역사와 흐름을 이해해야합니한다. 4 | 5 | 1950년 앨런 튜링이 튜링 테스트를 제안한 것이 그 아이디어의 상징적 시작점입니다. 6 | 7 | 하지만 1956년 존 매카시\(John McCarthy\) 등이 주도한 다트머스 회의를 본격적인 시작점으로 보는 것이 일반적입니다. 이 회의에서 처음으로 ‘Artificial Intelligence’ 즉 인공지능이라는 용어가 탄생합니다. 8 | 9 | 다트머스 회의 이후 AI의 역사에는 3번의 황금기와 2번의 침체기가 있었습니다. 10 | 11 | 이를 간략히 설명하면 다음과 같습니다. 12 | 13 | #### `1956 AI의 창세기` 14 | 15 | #### `1956 ~ 1974 제1차 AI 황금기 : 간단한 문제 해결` 16 | 17 | #### `1974 ~ 1980 첫번째 AI 침체기` 18 | 19 | #### `1980 ~ 1987 제2차 AI 황금기 : 전문가 시스템` 20 | 21 | #### `1987 ~ 1993 두번째 AI 침체기` 22 | 23 | #### `1993 ~ 제3차 AI 황금기 : 기계학습과 딥러닝` 24 | 25 | 최근의 인공지능 붐이 일어난 것은 빅데이터와 발전된 컴퓨팅 기술이 큰 역할을 했습니다. 26 | 27 | 글로벌 AI 소프트웨어 시장은 2018년 약 95억달러 규모에서 연 평균 43.4%씩 성장하여 2025년에는 1,186억 달러규모에 이를 것으로 예상합니. AI 음성인식 기술이 스마트폰, AI스피커 등을 통해 확산되고 있는데, 2019년 이후에는 자율 자동차, 웨어러블 기기, 주요 가전 등 다양한 제품으로 확대될 전망입니다. 우리나라는 중국, 미국 등과의 인공지능\(AI\) 기술격차가 심화되고 있으며 AI 스타트업, 전문가 및 인재가 극히 미미한 수준에 머물고 있습다. 28 | 29 | -------------------------------------------------------------------------------- /2./2.2./2.2.5.-pycharm/README.md: -------------------------------------------------------------------------------- 1 | # 2.2.5. 파이참\(PyCharm\) 설치 2 | 3 | 4 | 다음의 링크에서 파이참으, 을다운 받을 수 있습니다. 5 | 6 | [https://www.jetbrains.com/pycharm/download/](https://www.jetbrains.com/pycharm/download/#section=windows) 7 | 8 | 위의 링크에 접속하면 아래와 같은 화면의 다운로드 페이지가 나옵니다. Linux 64bit 버전을 다운로드 합니다. 9 | 10 | ![](../../../.gitbook/assets/2250.png) 11 | 12 | PyCharm Linux 64bit 버전을 다운로드 후 설치를 진행합니다. 먼저 다운받은 디렉토리로 이동하여 다음의 tar 명령으로 압축을 해제합니다. 13 | 14 | >tar xvf pycharm-community-5.0.4.tar.gz 15 | 16 | ![](../../../.gitbook/assets/2251.png) 17 | 18 | cd 명령으로 PyCharm의 bin 폴더로 이동하여 $ sh pycharm.sh 명령어로 파이참 설치를 진행합니다. 19 | 20 | ![](../../../.gitbook/assets/2252.png) 21 | 22 | 대부분 설정을 default값으로 설치를 진행합니다. 23 | 24 | ![](../../../.gitbook/assets/2256.png) 25 | 26 | Do not import settings 으로 설정 합니다. 라이선스에 동의하고 27 | 28 | ![](../../../.gitbook/assets/2257.png) 29 | 30 | 파이참의 UI 테마는 원하는 것으로 선택합니다. 31 | 32 | ![](../../../.gitbook/assets/2258.png) 33 | 34 | 나머지 설정들은 기본으로 정해줍니다. 35 | 36 | ![](../../../.gitbook/assets/2259.png) 37 | 38 | -------------------------------------------------------------------------------- /2.-1/1./1.1.2.-open-source/1.2.-python.md: -------------------------------------------------------------------------------- 1 | # 1.3. 아나콘다\(Anaconda\) 2 | 3 | 4 | 아나콘다는 컨티눔\(Continuum Analytics\)이라는 회사에서 만든 파이썬 배포판으로, 수백 개의 파이썬 패키지를 포함하고 있습니다. 또한 회사 내에서도 상업용으로 무료로 사용할 수 있다는 장점이 있습니다. 여러 가지 파이썬 배포판 중 가장 후발주자이지만 가장 뛰어난 완성도로 현재는 사실상의 표준 배포판으로 되어가고 있습니다. 아나콘다는 패키지 의존성을 관리해주므로 가상환경에 따라 독립적으로 패키지를 관리할 수 있습니다. 5 | 6 | 파이썬은 파이썬 공식 홈페이지에서 받을 수 있으며, pip 툴만을 포함하고 있습니다. 필요한 패키지나 라이브러리 등을 설치할 때 모두 수동으로 해줘야 합니다. 그러나 아나콘다는 파이썬 기본 패키지에 각종 수학/과학 라이브러리들을 같이 패키징해서 배포하는 개발 플랫폼이라고 볼 수 있습니다. 7 | 8 | 아나콘다에 포함된 툴들로는 대표적으로 panda, numpy, scipy, sklearn, matplotlib, Jupyter Notebook 등이 있습니다. 9 | 10 | ![https://www.anaconda.com/distribution/](../../../.gitbook/assets/130.png) 11 | 12 | 일반적으로 파이썬으로 프로그래밍을 할 때 아나콘다를 사용하지 않아도 무방합니다. 그러나 파이썬을 계속하다 보면 아나콘다 없이 사용하기는 불편한 경우가 많이 발생합니다. 특정 라이브러리가 파이썬 버전에 종속되는 경우가 있습니다. 가령 텐서플로우 윈도우버전은 파이썬 3.5버전 까지만 있습니다. 이런 문제들을 해결하는 방법 중 가장 편한 방법이 아나콘다를 사용하는 것입니다. 아나콘다의 가장 큰 장점은 각 프로젝트 별로 개발 환경을 구성 할 수 있다는 것입니다. 하나의 PC에서 목적에 따라 여러 개의 독립적인 개발환경을 구성하여 프로그램을 개발할 수 있으며, 해당 프로그램의 의존성을 보다 명확하게 할 수 있다는 장점도 있습니다. 13 | 14 | -------------------------------------------------------------------------------- /2./2.2./2.2.4..md: -------------------------------------------------------------------------------- 1 | # 2.2.4. 장고 설치 2 | 3 | 4 | Anaconda Prompt 에서 onebook 가상환경인지를 확인한 후 먼저 장고의 기본 환경을 설치합니다. 5 | 6 | >sudo apt install python3-django-common 7 | 8 | >sudo apt install python3-django 9 | 10 | ![](../../.gitbook/assets/2240.png) 11 | 12 | 다음 명령으로 장고를 설치합니다. 13 | 14 | >pip install Django==2.1.7 15 | 16 | 장고 영문 표기에 D가 대문자이고, 설치버전을 지정할 때 == 두 개를 사용해야 합니다. 17 | 18 | ![](../../.gitbook/assets/2241.png) 19 | 20 | 장고 설치가 정상적으로 완료 되었다면 장고 웹 프레임워크가 동작 하는지 확인해 봅니다. 21 | 22 | >django-admin startproject djangotest . 23 | 24 | ![](../../.gitbook/assets/2242.png) 25 | 26 | 위의 명령을 실행해 줍니다. 명령 끝에. \(점\)을 입력하는 것은 현재 디렉토리에 장고를 설치하라고 스크립트에 알려주는 축약된 표시입니다. 이 명령으로 윈도우 사용자 기본 폴더에 djangotest 라는 폴더가 생성 되었으며 manage.py , settings.py 같은 파일도 자동으로 생성됩니다. 생성된 웹사이트를 확인 하려면 다음의 명령을 실행합니다. 27 | 28 | > python manage.py runserver 29 | 30 | ![](../../.gitbook/assets/2243.png) 31 | 32 | 웹브라우저에서 주소창에 [http://127.0.0.1:8000/](http://127.0.0.1:8000/)을 입력하면 아래와 같은 웹 페이지를 볼 수 있습니다. 33 | 34 | ![](../../.gitbook/assets/2244.png) 35 | 36 | -------------------------------------------------------------------------------- /3./3.6./README.md: -------------------------------------------------------------------------------- 1 | # 3.6. 함수 2 | 3 | 함수\(function\), 서브루틴\(subroutine\), 루틴\(routine\), 메서드\(method\), 프로시저\(procedure\)는 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분을 의미합니다. 4 | 5 | 함수는 대부분의 프로그래밍 언어에서 지원하는 기능으로, 하나의 큰 프로그램을 여러 부분으로 나누어 주기 때문에 같은 함수를 여러 상황에서 여러 차례 호출할 수 있으며 일부분을 수정하기 쉽다는 장점을 가집니다. 6 | 7 | 함수를 사용함으로써 얻는 장점은 다음과 같은 것들이 있습니다. 8 | 9 | * 하나의 큰 프로그램을 여러 부분으로 분리함으로써 [구조적 프로그래밍](https://ko.wikipedia.org/wiki/%EA%B5%AC%EC%A1%B0%EC%A0%81_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)이 가능합니다. 10 | * 같은 코드를 계속 쓰지 않음으로서 프로그램의 용량을 줄일 수 있고, 다른 부분이나 다른 프로그램에서 같은 코드를 사용할 수 있습니다. 11 | * 함수의 기능과 내부 구현을 분리하는 [캡슐화](https://ko.wikipedia.org/wiki/%EC%BA%A1%EC%8A%90%ED%99%94)가 이루어집니다. 12 | 13 | #### 함수 호출의 순서 14 | 15 | 함수를 지원하는 일반적인 프로그래밍 언어에서는 다음과 같은 구조를 갖습니다. 16 | 17 | 1. 어떤 루틴에서 함수를 호출합니다. 이때 함수가 가지는 특정 변수에 값을 전달하기도 하며, 이 특정 변수를 매개변수\(parameter\)라고 하며 전달되는 값을 인자\(argument\)라고 부릅니다. 18 | 2. 함수가 호출되어 계산을 수행합니다. 19 | 3. 함수가 종료되고 실행 흐름이 원래의 루틴으로 돌아온다. 경우에 따라서는 함수가 계산하여 반환된 값\(반환값, return value\)을 원래의 루틴에서 사용하기도 합니다. 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /3./3.3./3.3.2.-import.md: -------------------------------------------------------------------------------- 1 | # 3.3.2. 모듈의 사용\(import\) 2 | 3 | **1\) 모듈이란?** 4 | 5 | 파이썬\(Python\) 모듈\(Module\)이란 자주 사용되는 코드나 유용한 코드를 논리적으로 묶어서 관리하고 사용할 수 있도록 하는 것입니다. 보통 하나의 파이썬.py 파일이 하나의 모듈이 됩니다. 모듈 안에는 함수, 클래스, 혹은 변수들이 정의될 수 있으며, 실행 코드를 포함할 수도 있습니다. 6 | 7 | **2\) 내장 모듈** 8 | 9 | 파이썬은 기본적으로 상당히 많은 표준 라이브러리 모듈들을 제공하고 있으며, 써드파티\(3rd Party\)에서도 많은 파이쎤 모듈들을 제공하고 있습니다. 파이썬 프롬프트에서 다음과 같이 help\("modules"\)을 입력하면 설치된 모듈의 목록을 확인할 수 있습니다. 10 | 11 | ![](../../.gitbook/assets/3321.png) 12 | 13 | **3\) 모듈의 사용\(import\)** 14 | 15 | 이러한 모듈들을 사용하기 위해서는 모듈을 import하여 사용하면 되는데, import 문은 다음과 같이 하나 혹은 복수의 모듈을 불러들일 수 있습니다. 16 | 17 | ```text 18 | import 모듈 19 | import 모듈1, 모듈2, 모듈3 ... 20 | import 모듈명 as 별명 21 | ``` 22 | 23 | 이 명령들은 현재 작업하고 있는 파이썬 스크립트에 모듈에 있는 모든 내용을 포함시킵니다. 모듈에 포함된 함수를 사용하기 위해서는 '모듈명.함수명'처럼 모듈명을 반드시 입력해야 합니다. as를 사용하여 모듈명에 별명을 붙일 수 있습니다. 24 | 25 | ```text 26 | from 모듈 import 함수 27 | from 모듈 import 함수1, 함수2, 함수3 ... 28 | from 모듈 import * 29 | from 모듈 import 함수 as 별명 30 | ``` 31 | 32 | form import 방식을 사용하면 모듈이름을 생략할 수 있습니다. \*를 사용하면 모듈에 있는 모든 내용이 포함됩니다. 33 | 34 | -------------------------------------------------------------------------------- /4.-and/5.1./5.1.2.-classification.md: -------------------------------------------------------------------------------- 1 | # 5.1.2. 분류 \(Classification\) 2 | 3 | supervised ML의 문제의 타입 \(problem type\)에 따라 크게 두가지로 분류될 수 있습니다. 4 | 5 | - Regression\(회귀 분석\): 주어진 데이터가 어떤 함수로부터 생성됐는가를 알아보는 ‘함수 관계’를 추측하는 것입니다. 예측하는 결과값이 continuous value\(연속값\) 6 | 7 | - Classification\(분류\): 분류는 말 그대로 입력이 어떤 카테고리에 해당하는지 나누는 것입니다. 즉 예 아니오 와 같은 예측하는 결과값이 discrete value\(이산값\) 8 | 9 | Classification은 주어진 데이터를 정해진 카테고리에 따라 분류하는 문제를 말합니다. 최근에 많이 사용되는 이미지 분류도 Classification 중에 하나입니다. 10 | 11 | 예를 들어, 이메일이 스팸메일인지 아닌지를 예측하려고 하면 이메일은 스팸메일/정상적인 메일로 라벨링 될 수 있을 것입니다. 비슷한 예시로 암을 예측하려고 가정했을 때 이 종양이 악성종양인지/아닌지로 구분할 수 있습니다. 이처럼 맞다/아니다로 구분되는 문제를 **Binary Classification**이라고 부릅니다. 12 | 13 | 분류 문제가 모두 맞다 / 아니다로 구분되지는 않습니다. 예를 들어, 공부시간에 따른 전공 Pass/Fail을 예측하려고 하면 이는 Binary Classification 으로 볼 수 있습니다. 반면에, 수능 공부시간에 따른 전공 학점을 A / B / C / D / F 으로 예측하는 경우도 있습니다. 이러한 분류를 **Multi-label Classification**이라고 합니다. 14 | 15 | Regression은 연속된 값을 예측하는 문제를 말합니다. 주로 어떤 패턴이나 트렌드, 경향을 예측할 때 사용됩니다. Coursera에서는 Regression을 설명할 때 항상 집의 크기에 따른 매매가격을 예로 듭니다. 아까와 유사한 예를 들자면, 공부시간에 따른 전공 시험 점수를 예측하는 문제를 예로 들 수 있습니다. 16 | 17 | -------------------------------------------------------------------------------- /2.-1/1./2.1.6..md: -------------------------------------------------------------------------------- 1 | # 2.1.6. 활성화 함수 2 | 3 | 인공 신경망은 가중치와 활성화 함수의 연결로 이루어진 간단한 구조입니다. 4 | 5 | 놀라운 것은 이렇게 간단한 개념의 인공 뉴런을 충분히 많이 연결해 놓는 것만으로 인간이 인지하기 어려운 매우 복잡한 패턴까지도 스스로 학습할 수 있게 된다는 사실입니다. 6 | 7 | 인공 신경망모델에서 뉴런은 층으로 구성 되고 층에는 여러 개의 노드로 구성되어 있습니다. 하나의 노드는 1개이상의 노드와 연결되어 있고 데이터 입력을 받게 되는데 연결강도의 가중치의 합을 구하게 되고 활성화 함수를 통해 가중치의 값의 크기에 따라 출력하게 됩니다. 8 | 9 | 인공신경망에서 입력신호를 받아 임계치\(threshold\)를 넘어서는 경우에만 출력 신호를 생성해주는 함수를 활성화함수\(activation function\) 이라고 합니다. 즉 인공신경망에서 입력 받은 데이터를 다음층으로 출력할지 말지를 결정 활성화 함수\(activation function\)는 인공신경망을 통과해온 값을 최종적으로 어떤 값으로 만들지를 결정합니다. 즉, 이 함수가 바로 인공 뉴런의 핵심 중에서도 가장 중요한 요소입니다. 활성화 함수에는 대표적으로 Sigmoid, ReLU, tanh 함수가 있습니다. 10 | 11 | 12 | 1\) Sigmoid Function\(시그모이드함수\) 13 | 14 | 로지스틱함수라고도 하며 x값의 변화에 따라 0에서 1까지의 값을 출력하는 S자형 함수입니다. 15 | 16 | 2\) Tanh 17 | 18 | Sigmoid Function을 재활용하여 -1 ~ 1의 범위를 갖는 함수입니다. 19 | 20 | 3\) ReLU\(Rectified Linear Unit 경사함수\) 21 | 22 | Gradient Vanishing 문제\(layer가 늘어날때 값이 사라지는 현상\)을 해결하기 위한 함수 입니다. x값이 음수일 경우 0을 출력합니다. 23 | 24 | 4\) Leaky ReLU 25 | 26 | x값이 음수일때 입력값의 10분의 1만을 출력하는 ReLU 입니다. 27 | 28 | ![](../../.gitbook/assets/2150.png) 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /2.-1/2.4.-pytorch.md: -------------------------------------------------------------------------------- 1 | # 2.4. 파이토치\(PyTorch\) 2 | 3 | 파이토치\(Pytorch\)는 파이썬\(Python\) 기반의 오픈 소스 머신러닝 라이브러리로, 페이스북 인공지능 연구집단에 의해 개발되었다. 간결하고 구현이 빨리 되며, 텐서플로우보다 사용자가 익히기 훨씬 쉽다는 특징이 있다. 또한 코드를 직접 다른 사람들에게 설명해 주기에도 효과적이다. 텐서플로우와 파이토치의 가장 큰 차이점은 딥러닝을 구현하는 패러다임이 다르다는 것이다. 텐서플로우는 Define-and-Run 프레임워크인 반면에, 파이토치는 Define-by-Run이다. 이 패러다임의 차이로 텐서플로우의 경우 먼저 모델을 만들고 값을 다 따로 넣어주어야 해서 직관적이지 않지만, 파이토치의 경우 간단하고 직관적이다. 게다가 상대적으로 텐서플로우보다 파이토치가 학습을 따라가기가 더 쉽다. 4 | 5 | 사람들이 파이토치를 선택하는 주된 이유 중 하나는 코드를 이해하기가 쉽기 때문입니다. 파이토치 프레임워크는 파이썬과 함께 작동하도록 설계, 제작되었기 때문에 모델과 계층뿐 아니라 다른 모든 것, 옵티마이저, 데이터 로더, 손실 함수, 변환 등도 다름아닌 파이썬 클래스입니다. 파이썬을 이해 한다면 파이토치 또한 쉽게 이해할 수 있습니다. 6 | 7 | 파이토치는 전통적인 텐서플로우의 정적 실행 그래프가 아닌 즉시 실행 모드로 작동하므로\(텐서플로우 2.0은 즉시 실행을 제공하지만 매끄럽지 않은 부분이 있음\) 맞춤형 파이토치 클래스를 추론하기가 매우 쉽고 텐서보드\(TensorBoard\) 또는 print\(\) 문에 이르기까지의 표준 파이썬 기법으로 디버깅하고 스택 트레이스 샘플에서 플레임\(flame\) 그래프를 생성할 수 있습다. 덕분에 판다스\(Pandas\), 사이킷-런\(Scikit-learn\)과 같은 다른 데이터 과학 프레임워크에서 딥 러닝으로 넘어온 사람들에게도 상당히 친숙하게 느껴집니다. 8 | 9 | 흔히 파이토치를 “강력한 GPU 가속이 적용되는 파이썬으로 된 텐서와 동적 신경망”이라고 합다. 10 | 11 | 최근 프리퍼드 네트웍스\(Preferred Networks\),오픈AI 많은 AI 영역들이 파이토치를 딥러닝 프레임워크로 채택하고 있는 중입니다. 12 | 13 | -------------------------------------------------------------------------------- /3./3.2..md: -------------------------------------------------------------------------------- 1 | # 3.2. 파이썬의 특징 2 | 3 | 프로그래밍 언어로써 파이썬은 다음과 같은 특징이 있습니다. 4 | 5 | * 배우기 쉽다 - Python은 키워드가 적고 구조가 단순하며 구문이 명확합니다. 이를 통해 배우고자 하는 사람들이 언어를 빨리 습득 할 수 있습니다. 6 | * 읽기 쉽다 - Python 코드는 명확하게 정의되고 표시됩니다. 7 | * 유지 관리가 용이하다 - Python의 소스 코드는 유지 관리가 매우 쉽습니다. 8 | * 광범위한 표준 라이브러리 - 파이썬의 많은 라이브러리들은 UNIX, Windows 및 Macintosh에서 이식성이 뛰어나고 플랫폼 간 호환이 가능합니다. 9 | * 대화형 모드 - Python은 대화식 테스트와 코드 스니펫 디버깅을 허용하는 대화형 모드를 지원합니다. 10 | * 이식성 - Python은 다양한 하드웨어 플랫폼에서 실행될 수 있으며 모든 플랫폼에서 동일한 인터페이스를 사용합니다. 11 | * 확장가능 - 파이썬 인터프리터에 저수준 모듈을 추가할 수 있습니다. 이 모듈을 사용하면 프로그래머가 도구를 추가하거나 사용자 정의하여 보다 효율적으로 사용할 수 있습니다. 12 | * 데이터베이스 - Python은 모든 주요 상용 데이터베이스에 대한 인터페이스를 제공합니다. 13 | * GUI 프로그래밍 - Python은 Windows MFC, Macintosh 및 Unix의 X Window 시스템과 같은 많은 시스템 호출, 라이브러리 및 Windows 시스템에서 생성 및 포팅 할 수 있는 GUI 응용 프로그램을 지원합니다. 14 | * OOP\(Object Orient Programming\)뿐 아니라 기능적 및 구조적 프로그래밍 방법을 지원합니다. 15 | * 스크립트 언어로 사용하거나 대형 응용 프로그램을 작성하기 위해 바이트 코드로 컴파일 할 수 있습니다. 16 | * 매우 높은 수준의 동적 데이터 형식을 제공하며 동적 형식 검사를 지원합니다. 17 | * 자동 가비지\(garbage\) 수집을 지원합니다. 여기서 가비지는 정리되지 않은 메모리, 유효하지 않은 메노리 주소등을 말합니다. 18 | * C, C ++, COM, ActiveX, CORBA 및 Java와 쉽게 통합될 수 있습니다. 19 | 20 | -------------------------------------------------------------------------------- /1./1.1.-artificial-intelligence/1.1.3.-github.md: -------------------------------------------------------------------------------- 1 | # 1.1.3. 깃허브\(GitHub\) 2 | 3 | 4 | 깃\(Git\)은 여러 개발자가 참여하는 프로젝트의 어떤 부분도 겹쳐 쓰지 않게 프로젝트의 변경을 관리하는 버전관리 소프트웨어입니다. 리눅스의 개발자 리누스 토발즈가 리눅스를 더 잘 만들기 위해 만든 프로젝트 관리 툴이 깃\(Git\)입니다. 깃허브\(GitHub\)는 분산 버전 관리 툴인 깃\(Git\)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스입니다. 5 | 6 | SW개발자들 사이에서 널리 사용되는 깃허브는 오픈소스 접근 방식을 통해 다른 사람들의 코드를 연구하고, 배우고, 자신들의 목적을 위해 코드를 수정·변경 및 재배포까지 할 수 있습니다. 깃허브의 툴은 SW개발자들이 코드를 저장하고 업데이트를 추적하고 문제를 논의하는 데 필수적인 통로를 제공합니다. GitHub는 영리적인 서비스와 오픈소스를 위한 무상 서비스를 모두 제공합니다. 현재 가장 인기 있는 오픈 소스 코드 저장소입니다. 7 | 8 | GitHub는 Git을 지원하는 서비스 중 가장 인기가 있고 유명합니다. 때문에, 유명한 오픈 소스 라이브러리들이 많이 사용하고 있습니다. 예를 들면, TensorFlow, CNTK 등 많은 오픈 소스가 GitHub에 공유되고 있습니다. 깃허브에는 8,500만 개 정도의 프로젝트 저장소가 있습니다. 깃허브의 툴은 SW개발자들이 코드를 저장하고 업데이트를 추적하고 문제를 논의하는 데 있어 필수적입니다. 영향력도 막강합니하다. 전세계 150만개 이상의 조직에서 2300만명 이상이 사용하고 있습니다. 9 | 10 | 2018년 마이크로소프트가 공식적으로 세계 최대 오픈소스 코드 공유 플랫폼인 깃허브를 인수했습니다. . 마이크로소프트는 세계 최대 SW개발 플랫폼 깃허브를 인수하면서 단숨에 전세계 2800만명 이상의 개발자를 거느리는 플랫폼을 갖게 됐습니다. 2000년대 중반까지만 해도 오픈소스 진영을 적대시하며 ‘박멸’ 대상으로 꼽기까지 했던 마이크로소프트가 오픈소스 플랫폼을 인수해 사업을 혁신하고 생태계를 확대하는 수단으로 삼겠다고 밝혔습니다. 마이크로소프트도 이제는 오픈 소스 시대라는 것을 인정하는 것입니다 11 | 12 | -------------------------------------------------------------------------------- /1./1.6./1.1.1.-jupyter-notebook.md: -------------------------------------------------------------------------------- 1 | # 1.1.1. 주피터 노트북\(Jupyter Notebook\) 2 | 3 | 4 | 개발자는 보통 통합 개발 환경이라고 하는 IDE\(Integrated Development Environment\)를 이용해 프로그램을 개발합니다. IDE는 변수나 함수 이름을 자동으로 완성하는 기능을 제공하고 있어 개발자가 더욱 빠르게 코드를 작성할 수 있게 합니다. 또한 코드의 실행과 결과 확인을 IDE를 통해 한 번에 처리할 수 있어 편리합니다. 그뿐만 아니라 작성한 프로그램이 정상적으로 동작하지 않을 때는 디버거\(debugger\)를 이용해 코드를 쉽게 분석할 수 있는 기능도 제공합니다. 5 | 6 | 파이썬용 IDE에는 주피터 노트북, 비주얼 스튜디오 기반의 PTVS\(Python Tools Visual Studio\), 이클립스 기반의 PyDev, 그리고 최근 인기가 높은 JetBrains의 파이참\(PyCharm\) 등이 있습니다. 7 | 8 | · PTVS: http://microsoft.github.io/PTVS/ 9 | 10 | · PyDev: http://www.pydev.org/ 11 | 12 | · PyCharm: https://www.jetbrains.com/pycharm/download/ 13 | 14 | 주피터 노트북은 웹브라우저상에서 파이썬 코드를 단계적으로 쉽게 실행하고, 시각적으로 빠르게 확인해볼 수 있도록 해주는 프로그램입니다. 이런 방식은 탐색적 데이터 분석에 아주 적합하여 많은 데이터 분석가가 주피터 노트북을 사용하고 있습니다. 15 | 16 | 주피터 노트북의 장점은 셀 단위로 작성하여 실행할 수 있기에 큰 파이썬 파일도 셀 단위로 나누어 번역, 실행하면서 인터랙티브한 동작이 가능하다는 점입니다. 또한 데이터 분석을 위한 파이썬 파일 작성 후 실행하였을 때, 차트, 표 등의 결과값 출력도 바로 바로 직관적으로 볼 수 있고, 이후 Github에 주피터 노트북의 결과 출력 방식 그대로 올릴 수 있다는 장점도 가지고 있습니다. 17 | 18 | ![](../../.gitbook/assets/161.png) 19 | 20 | 주피터 노트북은 아나콘다를 설치하면 기본적으로 함께 설치됩니다. 21 | 22 | -------------------------------------------------------------------------------- /2.-1/1.6./1.1.1.-jupyter-notebook.md: -------------------------------------------------------------------------------- 1 | # 2.5.1. 주피터 노트북\(Jupyter Notebook\) 2 | 3 | 4 | 개발자는 보통 통합 개발 환경이라고 하는 IDE\(Integrated Development Environment\)를 이용해 프로그램을 개발합니다. IDE는 변수나 함수 이름을 자동으로 완성하는 기능을 제공하고 있어 개발자가 더욱 빠르게 코드를 작성할 수 있게 합니다. 또한 코드의 실행과 결과 확인을 IDE를 통해 한 번에 처리할 수 있어 편리합니다. 그뿐만 아니라 작성한 프로그램이 정상적으로 동작하지 않을 때는 디버거\(debugger\)를 이용해 코드를 쉽게 분석할 수 있는 기능도 제공합니다. 5 | 6 | 파이썬용 IDE에는 주피터 노트북, 비주얼 스튜디오 기반의 PTVS\(Python Tools Visual Studio\), 이클립스 기반의 PyDev, 그리고 최근 인기가 높은 JetBrains의 파이참\(PyCharm\) 등이 있습니다. 7 | 8 | · PTVS: http://microsoft.github.io/PTVS/ 9 | 10 | · PyDev: http://www.pydev.org/ 11 | 12 | · PyCharm: https://www.jetbrains.com/pycharm/download/ 13 | 14 | 주피터 노트북은 웹브라우저상에서 파이썬 코드를 단계적으로 쉽게 실행하고, 시각적으로 빠르게 확인해볼 수 있도록 해주는 프로그램입니다. 이런 방식은 탐색적 데이터 분석에 아주 적합하여 많은 데이터 분석가가 주피터 노트북을 사용하고 있습니다. 15 | 16 | 주피터 노트북의 장점은 셀 단위로 작성하여 실행할 수 있기에 큰 파이썬 파일도 셀 단위로 나누어 번역, 실행하면서 인터랙티브한 동작이 가능하다는 점입니다. 또한 데이터 분석을 위한 파이썬 파일 작성 후 실행하였을 때, 차트, 표 등의 결과값 출력도 바로 바로 직관적으로 볼 수 있고, 이후 Github에 주피터 노트북의 결과 출력 방식 그대로 올릴 수 있다는 장점도 가지고 있습니다. 17 | 18 | ![](../../.gitbook/assets/161.png) 19 | 20 | 주피터 노트북은 아나콘다를 설치하면 기본적으로 함께 설치됩니다. 21 | 22 | -------------------------------------------------------------------------------- /1.1.-artificial-intelligence/1.7.-ann.md: -------------------------------------------------------------------------------- 1 | # 1.7. 인공신경망\(ANN\) 2 | 3 | 뉴런이란 신경계의 구조적 및 기능의 단위로써 신경세포와 거기서 나온 돌기를 합친 것을 말합니다. 신경 세포체, 핵, 가지돌기, 축삭돌기, 시냅스 등으로 구성되어 있습니다. 인간의 뇌는 뉴런이라는 수많은 신경세포로 이루어 져 있습니다. 4 | 5 | ![](../.gitbook/assets/171.png) 6 | 7 | 각각의 뉴런은 시냅스라는 연결 부위를 통해 수백 수천개의 다른 뉴런들과 연결되어 있습니다. 한 뉴런의 흥분은 시냅스를 통하여 다른 뉴런의 수상돌기로 전달됩니된다. 감각 기관에서 받아들인 정보가 뉴런을 통해 뇌로 전달 됩니다. 8 | 9 | ![](../.gitbook/assets/172.png) 10 | 11 | 갓난 아기는 태어나서 개와 고양이를 보고 구분해내지 못한다. 하지만 이후 다양한 사물들을 보고, 듣고, 언어에 대한 개념이 생기고 무의식적인 학습을 통해서 사물을 구분하고 분류하게 됩니다. 성인은 개와 고양이의 사진이나, 개와 고양이의 음성을 거의 즉각적으로 구분해 낼 수 있습니다. 사람의 이런 능력이 가능한 것은 뇌의 뉴런을 통한 학습체계 덕분이라고 합니다. 12 | 13 | 인간의 뇌는 1천억개의 뉴런을 가지고 있고, 초파리는 10만개, 선충은 302개의 뉴런을 갖고 있다고 합니다. 초파리는 10만개의 뉴런으로 잘 날아다니고, 음식을 섭취하며, 위험을 피하는 등 복잡한 업무를 수행하고, 선충도 불과 302개의 뉴런으로 컴퓨터보다 힘든 업무를 잘 수행합니다. 14 | 15 | 과학자들의 관찰에 의하면 뉴런은 입력을 받았을 때 즉시 반응하지는 않습니다. 입력이 누적되어 특정 수준\(threshold\)에 도달된 경우에만 출력을 합니다. 뉴런이 미세한 잡음 신호는 전달하지 않고 의미 있는 신호만 전달합니다. \(시냅스 가소성\) 16 | 17 | 인공신경망\(ANN; Artificial Neural Network\)은 사람 또는 동물 두뇌의 신경망에 착안하여 구현된 컴퓨팅 시스템으로 인간의 신경을 흉내 낸 머신러닝 기법을 말합니다. 18 | Artificial Neural Network \(ANN\)는 딥 러닝의 가장 핵심적인 기술로써, 신경 세포인 뉴런을 추상화한 인공 뉴런으로 구성된 네트워크를 말합니다. 19 | 20 | ![](../.gitbook/assets/173.png) 21 | 22 | -------------------------------------------------------------------------------- /3./3.5./3.5.1..md: -------------------------------------------------------------------------------- 1 | # 3.5.1. 조건문 2 | 3 | 일반적으로 프로그램을 작성하면 위에서부터 아래로 순서대로 실행됩니다. 하지만 프로그램이 꼭 순서대로만 실행되어서는 올바른 결과를 얻을 수 없습니다. 경우에 따라서 실행 순서를 변경해야 하는 경우가 생기는데 이때에 조건문을 사용합니다. 다음 그림은 대부분의 프로그래밍 언어에서 보여지는 일반적인 의사 결정 구조의 형태입니다. 4 | 5 | ![](../../.gitbook/assets/3510.png) 6 | 7 | 파이썬 프로그램에서 0이 아닌 값과 null이 아닌 값을 모두 TRUE로 가정하고, 0 또는 Null 인 경우 FALSE 값으로 가정합니다. 8 | 9 | 파이썬 프로그래밍 언어는 의사 결정 문을 다음과 같은 유형을 제공합니다. 10 | 11 | | Statement | Description | 12 | | :--- | :--- | 13 | | if 문 | 하나의 if문이 있는 경우 boolean 표현식 결과에 따른 하나 이상의 문이 올 수 있습니다. 조건이 참인 경우에만 실행됩니다. | 14 | | if..else 문 | 하나의 if문에 선택적으로 else 문을 쓸 수 있습니다. else 는 if문의 boolean 표현식 결과가 false 일 때 실행됩니다. 조건이 참일 때와 거짓일 때 다른 코드 실행하려고 하는 경우 사용됩니다. | 15 | | 중첩된 if 문 | 하나의 if문 안에서 다른 if문을 다시 사용 할 수 있습니다. 조건이 복잡한 경우 사용합니다. | 16 | 17 | ```text 18 | var = 100 19 | if ( var == 100 ) : print "Value of expression is 100" 20 | print "Good bye!" 21 | ``` 22 | 23 | 위 코드의 결과는 다음과 같습니다. 24 | 25 | ```text 26 | Value of expression is 100 27 | Good bye! 28 | ``` 29 | 30 | 복습하는 차원에서 스크립트 형태로 프로그램 테스트를 해 봅니다. 메모장을 열어 다음의 코드를 입력 합니다. 31 | 32 | ![](../../.gitbook/assets/3511.png) 33 | 34 | 저장할 때 인코딩을 UTF-8로 지정합니다. 35 | 36 | ![](../../.gitbook/assets/3512.png) 37 | 38 | python iftest.py 로 실행 해 봅니다. 39 | 40 | ![](../../.gitbook/assets/3513.png) 41 | 42 | -------------------------------------------------------------------------------- /2./2.2./2.2.5.-pycharm/1.md: -------------------------------------------------------------------------------- 1 | # 1\) 파이참 가상환경 설정 2 | 3 | 파이참 설치가 완료되면 파이참을 실행합니다. PyCharm 웰컴 창에서 Create New Project를 선택하거나 PyCharm 프로젝트가 열린 상태라면 메뉴에서 File > New Project를 선택합니다. 4 | 5 | ![](../../../.gitbook/assets/22510.png) 6 | 7 | 이제 몇 가지 중요한 작업을 해야 합니다. 8 | 9 | 첫 번째는 생성되는 파이썬 프로젝트들의 Location을 설정하는 작업입니다. 다음과 같이 입력합니다. 10 | 11 | ```text 12 | /home/[사용자계정/PycharmProjets/onebook 13 | ``` 14 | 15 | ![](../../../.gitbook/assets/22511.png) 16 | 17 | 그 다음에는 Project Interpreter를 설정해야 합니다. 18 | 19 | 그 이유는 앞장 윈도우 환경에서도 설명했듯이 파이참은 프로젝트별로 파이썬, 그리고 다른 라이브러리들을 프로젝트별로 다르게 선택 할 수 있습니다. 프로젝트 단위로 Virtualenv\(가상환경\)을 별도로 만들어서 관리하기 때문입니다. 20 | 21 | 초기 Project Interpreter는 New Virtualenv environment 로 되어 있습니다. 위의 그림 2번인 Project Interpreter를 마우스로 선택하면 다음과 같은 화면이 나타납니다. 22 | 23 | ![](../../../.gitbook/assets/22512.png) 24 | 25 | 이 화면에서 Existing interpreter 를 선택하고 오른쪽 끝의 \[…\] 를 누르면 Interpreter를 선택하는 화면이 다시 나타납니다. 26 | 27 | ![](../../../.gitbook/assets/22513.png) 28 | 29 | 다시 우측의 \[…\]를 눌러서 아나콘다 설치시에 설정했던 가상환경의 파이썬을 선택해 줍니다. 30 | 31 | 아나콘다 설치시 설정한 가상환경의 위치가 32 | 33 | /home/\[사용자계정\]/anaconda3/onebook/bin 이므로 해당 폴더내에 있는 python을 선택해야 합니다. 34 | 35 | 프로젝트 소스가 저장되는 위치, 그리고 사용할 가상환경과 인터프리터 선택이 올바르게 되었는지 다시한번 확인하고 ‘Create’버튼을 누릅니다. 36 | 37 | 다음과 같이 파이참이 실행 되는 것을 확인 합니다. 38 | 39 | ![](../../../.gitbook/assets/22514.png) 40 | 41 | -------------------------------------------------------------------------------- /3./3.10.-sequence/3.10.2.-tuple.md: -------------------------------------------------------------------------------- 1 | # 3.10.2. 튜플\(Tuple\) 2 | 3 | 튜플은 리스트와 마찬가지로 시퀀스입니다. 튜플과 리스트의 차이점은 리스트와 다르게 튜플은 변경할 수 없고 튜플은 괄호를 사용하는 반면 목록에서는 대괄호를 사용한다는 점입니다. 튜플은 구성요소를 변경할 수 없는 불변 데이터입니다. 연락처 목록처럼 수시로 데이터를 변경해야 하는 데이터는 튜플이 아니라 리스트로 작성해야 합니다. 튜플은 데이터를 나열하되 그 순서나 내용이 변하지 않을 때 잘 적용됩니다. 4 | 5 | ```python 6 | tup1 = ('physics', 'chemistry', 1997, 2000) 7 | tup2 = (1, 2, 3, 4, 5) 8 | tup3 = "a", "b", "c", "d" 9 | ``` 10 | 11 | 튜플의 값에 액세스하려면 대괄호를 사용하여 인덱스와 함께 슬라이스하여 해당 인덱스에서 사용할 수 있는 값을 얻으면 됩니다. 12 | 13 | ```python 14 | tup1 = ('physics', 'chemistry', 1997, 2000) 15 | tup2 = (1, 2, 3, 4, 5, 6, 7 ) 16 | print "tup1[0]: ", tup1[0] 17 | print "tup2[1:5]: ", tup2[1:5] 18 | ``` 19 | 20 | 튜플은 변경 불가능합니다. 즉, 튜플 요소의 값을 업데이트하거나 변경할 수 없습니다. 다음 예제와 같이 기존 튜플의 일부를 가져와서 새 튜플을 만들 수는 있습니다. 21 | 22 | ```python 23 | tup1 = (12, 34.56) 24 | tup2 = ('abc', 'xyz') 25 | tup3 = tup1 + tup2 26 | print tup3 27 | ``` 28 | 29 | 튜플은 문자열과 매우 비슷하게 + 및 \* 연산자를 사용할 수 있습니다. 30 | 31 | | Python Expression | Results | Description | 32 | | :--- | :--- | :--- | 33 | | len\(\(1, 2, 3\)\) | 3 | Length | 34 | | \(1, 2, 3\) + \(4, 5, 6\) | \(1, 2, 3, 4, 5, 6\) | Concatenation | 35 | | \('Hi!',\) \* 4 | \('Hi!', 'Hi!', 'Hi!', 'Hi!'\) | Repetition | 36 | | 3 in \(1, 2, 3\) | True | Membership | 37 | | for x in \(1, 2, 3\): print x, | 1 2 3 | Iteration | 38 | 39 | -------------------------------------------------------------------------------- /4.-and/5.5.-keras/README.md: -------------------------------------------------------------------------------- 1 | # 5.5. 웹 크롤링 2 | 3 | 웹 크롤러\(web crawler\)는 조직적, 자동화된 방법으로 인터넷에 있는 웹페이지를 방문해서 자료를 수집하는 일을 하는 프로그램을 말합니다. 웹 크롤러가 하는 작업을 '웹 크롤링'\(web crawling\) 혹은 '스파이더링'\(spidering\)이라 부릅니다. 검색 엔진과 같은 여러 사이트에서는 데이터의 최신 상태 유지를 위해 웹 크롤링합니다. 웹 크롤러는 대체로 방문한 사이트의 모든 페이지의 복사본을 생성하는 데 사용되며, 검색 엔진은 이렇게 생성된 페이지를 보다 빠른 검색을 위해 인덱싱합니다. 또한 크롤러는 링크 체크나 HTML 코드 검증과 같은 웹 사이트의 자동 유지 관리 작업을 위해 사용되기도 하며, 자동 이메일 수집과 같은 웹 페이지의 특정 형태의 정보를 수집하는 데도 사용됩니다. 4 | 5 | 웹 크롤러는 봇이나 소프트웨어 에이전트의 한 형태이다. 웹 크롤러는 대개 시드\(seeds\)라고 불리는 URL 리스트에서부터 시작하는데, 페이지의 모든 하이퍼링크를 인식하여 URL 리스트를 갱신합니다. 갱신된 URL 리스트는 재귀적으로 다시 방문합니다. 이때 한 페이지만 방문하는 것이 아니라 그 페이지에 링크되어 있는 또 다른 페이지를 차례대로 방문하고 이처럼 링크를 따라 웹을 돌아다니는 모습이 마치 거미와 비슷하다고 해서 스파이더라고 부르기도 합니다. 엄청난 분량의 웹문서를 사람이 일일 구별해서 모으는 일은 불가능에 가깝습니다. 때문에 웹 문서 검색에서는 사람이 일일이 하는 대신 이를 자동으로 수행해 줍니다. 웹 크롤러 크롤링의 다른 명칭은 **'Web Scraping', ‘web harvesting’, ‘web data extraction’**입니다. 6 | 7 | 머신러닝, 딥러닝에서 학습데이터를 구하기 위해 빅데이터, 데이터 분석에 대한 수요가 증가하고 이에 따라 자료를 얻는 원천으로 웹을 많이 이용합니다. 웹에서 데이터를 수집하고 분석을 위한 형태로 자료의 형태로 바꾸는 것이 바로 웹 크롤링입니다. 8 | 9 | 파이썬에서 웹크롤링을 하기 위해서는 BeautifulSoup, Selenium과 같은 도구를 사용해야 합니다. BeautifulSoup 은 HTML 및 XML 파일에서 원하는 데이터를 손쉽게 Parsing 할 수 있는 Python 라이브러리입니다. 웹문서의 구조를 찾아내는 파서를 이용해 찾고자 하는 데이터의 위치를 찾아 내어 값을 추출합니다. 10 | 11 | 예제는 [https://beomi.github.io/gb-crawling/](https://beomi.github.io/gb-crawling/) 싸이트를 참고 하였습니다. 12 | 13 | -------------------------------------------------------------------------------- /1./1.1.-artificial-intelligence/1.1.1.-cpu-gpu.md: -------------------------------------------------------------------------------- 1 | # 1.1.1. CPU와 GPU의 차이 2 | 3 | 4 | GPU \(Graphics Processing Unit\), CPU \(Central Processing Unit\) 5 | 6 | CPU는 컴퓨터의 두뇌를 담당합니다. 다양한 환경에서의 작업을 빠르게 수행하기 위해 ALU의 구조가 복잡하고 명령어 하나로 처리할 수 있는 기능도 많으며 각종 제어 처리를 위한 부분이 많습니다. 반면 GPU는 특화된 연산을 빠른 속도로 처리하기 위해 단순한 ALU를 여러개 갖고 있는 구조로 이루어져 있습니졌다. 이 때문에 GPU 단독으로는 아무것도 처리할 수 없으며 GPU를 제어하는 것은 여전히 CPU의 역할입니다. 7 | 8 | CPU는 입출력장치, 기억장치, 연산장치를 비롯한 컴퓨터 리소스를 이용하는 최상위 계층 장치인 '중앙처리장치'로써, 컴퓨터의 두뇌와 같은 역할을 담당합니다. 따라서 데이터 처리와 더불어 프로그램에서 분석한 알고리즘에 따라 다음 행동을 결정하고 멀티태스킹을 위해 나눈 작업들에 우선순위를 지정하고 전환하며 가상 메모리를 관리하는 등 컴퓨터를 지휘하는 역할을 수행합니다. 컴퓨터 프로그램의 대부분은 복잡한 순서를 가진 알고리즘을 가지고 작동하므로 CPU가 적합하다. 9 | 10 | GPU는 비디오, 즉 픽셀로 이루어진 영상을 처리하는 용도로 탄생했습니다. 이때문에 CPU에 비해 반복적이고 비슷한, 대량의 연산을 수행하며 이를 병렬적으로\(Parallel\) 나누어 작업하기 때문에 CPU에 비해 속도가 대단히 빠릅니다. 영상, 렌더링을 비롯한 그래픽 작업의 경우 픽셀 하나하나에 대해 연산을 하기 때문에 연산능력이 비교적 떨어지는 CPU가 GPU로 데이터를 보내 재빠르게 처리합니다. 11 | 12 | CPU와 GPU의 차이는 그 작업 처리 방식을 비교해보면 쉽게 알 수 있습니다. 하나의 CPU는 직렬 처리에 최적화된 몇 개의 코어로 구성된 반면, GPU는 병렬 처리용으로 설계된 수 천 개의 보다 소형이고 효율적인 코어로 구성되었습니다. 13 | 14 | ![https://kr.nvidia.com/object/what-is-gpu-computing-kr.html](../../.gitbook/assets/cpu-and-gpu.jpg) 15 | 16 | GPU는 병렬 처리를 효율적으로 처리하기 위한 수천 개의 코어를 가지고 있습니다. 어플리케이션의 연산집약적인 부분을 GPU로 넘기고 나머지 코드만을 CPU에서 처리하는 GPU 가속 컴퓨팅은 특히 딥러닝, 머신러닝 영역에서 강력한 성능을 제공합니다. 사용자 입장에서는 연산 속도가 놀라울 정도로 빨라졌음을 느낄 수 있습니다. 17 | 18 | -------------------------------------------------------------------------------- /4.-and/5.1./README.md: -------------------------------------------------------------------------------- 1 | # 5.1. 머신러닝 개념 소개 2 | 3 | 머신러닝은 데이터 마이닝, 자연 언어 처리, 이미지 인식 및 전문가 시스템과 같은 광범위한 핵심 응용 분야에서 핵심적인 역할을 수행할 수 있습니다. 이 장에서는 머신러닝 이론의 기초를 소개하고, 일반적인 주제와 개념을 설명하며, 머신러닝의 기본 사항에 익숙해지도록 설명합니다. 4 | 5 | 앞장에서 설명했듯이 머신러닝에는 지도\(supervised\) 와 비지도\(unsupervised\) 학습이 있습니다. 6 | 7 | supervised 학습 응용 프로그램의 대부분에서 궁극적인 목표는 미세 조정된 예측 함수 h \(x\) \("가설"이라고 함\)를 개발하는 것입니다. "학습"은 정교한 수학적 알고리즘을 사용하여 특정 도메인 \(예: 주택의 평방 피트\)에 대한 입력 데이터 x가 주어지면 특정 값 h\(x\)를 정확하게 예측할 수 있도록 이 함수를 최적화하는 것입니다. \(예를 들어: 그 집에 대한 시장 가격\). 8 | 9 | 실제로, x는 거의 항상 여러 데이터 요소를 나타냅니다. 예를 들어, 주택 가격을 예측하기 위해 평방 피트\(x1\) 뿐만 아니라 침실 수\(x2\), 욕실 수\(x3\), 층 수\(x4\), 건축 연도\(x5\), 우편 번호\(x6\) 등 많은 요소들이 있습니다. 사용할 입력을 결정하는 것은 머신러닝 디자인의 중요한 부분이지만 설명의 편의를 위해 단일 입력 값이 사용된다고 가정하는 것이 가장 쉽습니다. 10 | 11 | 그럼 우리의 간단한 예측 인자가 다음과 같은 형식을 가지고 있다고 가정 해 봅시다. 12 | 13 | $$ 14 | h(x) = θ0 + θ1(x) 15 | $$ 16 | 17 | 여기서 θ0과 θ1은 상수입니다. 우리의 목표는 가능한 한 잘 예측할 수 있도록 θ0과 θ1의 완벽한 가치를 찾는 것입니다. 18 | 19 | 예측 값 h\(x\)를 최적화하는 것은 예제를 통한 훈련으로 수행됩니다. 훈련을 위해 제공되는 각 학습 예제에서, 우리는 입력 값 x\_train과 대응하는 출력 y는 미리 알고 있습니다. 각 예제에 대해 알려진 올바른 값 y와 예측 값 h\(x\_train\) 사이의 차이를 찾습니다. 충분한 훈련 예제를 통해 θ0과 θ1의 값을 조정하여 h\(x\) 값이 제공되는 값과 일치하도록 조정할 수 있습니다. 이 과정은 시스템이 θ0과 θ1에 대한 최상의 값으로 수렴할 때까지 계속해서 반복됩니다. 20 | 21 | 설명을 위해 간단한 예제를 제시했지만 현실 세계의 문제는 훨씬 더 복잡합니다. 평면 스크린에는 3 차원 데이터 세트의 그림을 그릴 수 있지만 머신러닝 문제는 일반적으로 수백만 차원의 데이터와 매우 복잡한 예측 기능을 처리합니다. 22 | 23 | -------------------------------------------------------------------------------- /2./2.1./2.1.5./2.md: -------------------------------------------------------------------------------- 1 | # 3\) 설치된 라이브러리들의 버전 확인 하기 2 | 3 | 4 | 설치된 라이브러리들이 정상 동작 하는지 확인해 보겠습니다. 파이참이 실행되면 좌측 윈도우의 OneBook을 선택하고 우측 마우스를 눌러 New 를 선택합니다. 5 | 6 | ![](../../../.gitbook/assets/215310.png) 7 | 8 | New Python File 을 눌러 VersionCheck.py를 생성합니다. 9 | 10 | 에디터 영역에 아래 코드를 삽입합니다. 11 | 12 | ```text 13 | import scipy as sp 14 | import numpy as np 15 | import matplotlib as mpl 16 | import pandas as pd 17 | import sklearn as sk 18 | import h5py 19 | import tensorflow as tf 20 | import keras as k 21 | print('scipy ' + sp.__version__) 22 | print('numpy ' + np.__version__) 23 | print('matplotlib ' + mpl.__version__) 24 | print('pandas ' + pd.__version__) 25 | print('sklearn ' + sk.__version__) 26 | print('h5py ' + h5py.__version__) 27 | print('tensorflow ' + tf.__version__) 28 | print('keras ' + k.__version__) 29 | ``` 30 | 31 | 상단 메뉴에서 Run ==> Run을 선택하여 프로그램을 실행 시킵니다. \(단축키는 Alt+Shift+F10\) 32 | 33 | 에디터 영역의 제목을 우측 마우스 클릭하여 실행시킬 수도 있습니다. 34 | 35 | ![](../../../.gitbook/assets/215311.png) 36 | 37 | 초기 실행시 사용하는 컴퓨터에 따라 패키지 인덱싱으로 많은 시간이 걸릴 수 있습니다. 컴퓨터 성능에 따라 정말로 5~6분이 걸리 수 있으니 인내를 갖고 기다려야 합니다. 인덱싱이 끝나면 그 후부터 빠르게 처리됩니다. 다음과 같이 설치된 라이브러리들의 버전을 확인할 수 있습니다. 38 | 39 | ![](../../../.gitbook/assets/21527.png) 40 | 41 | \(\*\) 이 코드를 실행하면서 numpy 등 특정 모듈과 관련된 에러가 난다면 해당 모듈을 제거하고 다시 설치 한 후 실행해 봅니다. 42 | 43 | >pip uninstall numpy 44 | 45 | >pip install numpy 46 | 47 | -------------------------------------------------------------------------------- /3./3.9.-strings/README.md: -------------------------------------------------------------------------------- 1 | # 3.9. 문자열\(Strings\) 활용 2 | 3 | 4 | 5 | 문자열은 파이썬에서 가장 인기있는 자료형입니다. 문자를 "" \(쌍따옴표\), ''\(작은따옴표\) 로 묶어 간단하게 만들 수 있습니다. 쌍따옴표와 작은따옴표를 혼용할 수는 없습니다. 큰따옴표 안에 작은따옴표가 들어갈 수 있고, 반대로 작은따옴표 안에 큰따옴표 들어갈 수 있습니다. 6 | 7 | ```python 8 | var1 = 'Hello World!' 9 | var2 = "It's a good thing" 10 | ``` 11 | 12 | 문자열 부분집합에 액세스하려면 대괄호와 문자열 인덱스를 사용하여 문자열 부분을 가져오면 됩니다. 13 | 14 | ```python 15 | var1 = 'Hello World!' 16 | var2 = "Python Programming" 17 | print "var1[0]: ", var1[0] 18 | print "var2[1:5]: ", var2[1:5] 19 | #출력된 결과 20 | var1[0]: H 21 | var2[1:5]: ytho 22 | ``` 23 | 24 | 변수를 다른 문자열에 할당하여 기존 문자열을 "업데이트"할 수 있습니다. 새 값은 이전 값 또는 완전히 다른 문자열과 관련될 수 있습니다. 예를 들어 25 | 26 | ```python 27 | var1 = 'Hello World!' 28 | print "Updated String :- ", var1[:6] + 'Python' 29 | #출력된 결과 30 | Updated String :- Hello Python 31 | ``` 32 | 33 | 여러 줄의 문자를 입력할 때는 """ 큰따옴표 3개나, ''' 작은따옴표 3개를 입력합니다. \n 으로 표시되는 부분이 newline문자로 열을 바꿔주는 이스케이프 문자입니다. 34 | 35 | ```python 36 | para_str = """this is a long string that is made up of 37 | several lines and non-printable characters such as 38 | TAB ( \t ) and they will show up that way when displayed. 39 | NEWLINEs within the string, whether explicitly given like 40 | this within the brackets [ \n ], or just a NEWLINE within 41 | the variable assignment will also show up. 42 | """ 43 | print para_str 44 | ``` 45 | 46 | #### 47 | 48 | -------------------------------------------------------------------------------- /5./6.2.-chatter/README.md: -------------------------------------------------------------------------------- 1 | # 6.2. ChatterBot 챗봇 만들기 2 | 3 | 챗봇은 대화하는 로봇이라고 생각하면 됩니다. 특히 채팅 화면에서 사람 대신 대화하는 로봇이 챗봇입니다. 더 간단하게 말하면 전화로 응대하는 ARS 자동응답 시스템이 메신저안에서 대화해 준다고 생각하면 됩니다. 스마트폰 이용자 40% 정도가 15개 이상 앱을 설치하고 있지만 대부분 이용하는 앱은 메신저 또는 SNS, 포털/뉴스 미디어 용입니다. 챗봇은 이러한 모바일 생태계의 변화에 맞춰 메신저, SNS 등의 앱 위에 올려지는 또 하나의 앱이라고 보시면 되겠습니다. 4 | 5 | 실제 챗봇을 만들기 위해서는 엄청나게 많은 코딩과 학습이 필요 합니다. 6 | 7 | 챗봇을 개발하기 위해서는 일단 3가지를 고려해 보아야 합니다. 8 | 9 | - 어떤 서비스/컨텐츠을 제공할 것인가? 10 | 11 | - 어떤 기술로 고객의 의도를 파악 할 것인가? 12 | 13 | - 어떤 채널/플랫폼에서 서비스를 제공 할 것인가? 14 | 15 | 어떤 서비스/컨텐츠를 제공할 것인가"는 챗봇을 만드는 근본적인 목적입니다. 16 | 17 | 날씨를 제공하는 챗봇이라면 날씨 정보/컨텐츠를 생성해야 할 테고 직접 생성하지 못한다면 외부의 컨텐츠를 생산하는 곳과 제휴 또는 오픈된 API를 통해서 가져와야 할 것입니다. 18 | 19 | 이 문서에서는 ChatterBot이라는 오픈소스 챗봇엔진을 사용하여 챗봇을 만드는 방법을 설명하겠습니다 20 | 21 | ChatterBot의 다운로드 싸이트는 [https://github.com/gunthercox/ChatterBot](https://github.com/gunthercox/ChatterBot) 입니다. 22 | 23 | ChatterBot은 알려진 대화 모음을 기반으로 응답을 생성할 수있는 Python의 머신러닝 기반 대화식 다이알로그 엔진입니다. ChatterBot의 언어 독립적 디자인은 어떤 언어로든 말하도록 훈련받을 수있게 합니다. 24 | 25 | ChatterBot의 훈련받지 않은 인스턴스는 통신 방법에 대한 지식없이 시작됩니다. 사용자와 상호 작용을 할 때마다 가능한 응답에 대한 자체 지식을 향상 시킬수 있습니다. 26 | 27 | ChatterBot은 채팅 봇을 훈련시키는 데 사용할 수있는 데이터 유틸리티 모듈과 함께 제공됩니다. 현재이 모듈에는 12 개 이상의 언어에 대한 교육 데이터가 있습니다. 다행히도 한국어 코퍼스가 제공됩니다. 28 | 29 | 한글 코퍼스는 다음 주소에서 구할 수 잇습니다. 30 | 31 | [https://github.com/gunthercox/chatterbot-corpus](https://github.com/gunthercox/chatterbot-corpus) 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /index.md: -------------------------------------------------------------------------------- 1 | ## Welcome to GitHub Pages 2 | 3 | You can use the [editor on GitHub](https://github.com/nainsys/PythonDeepLearning/edit/master/index.md) to maintain and preview the content for your website in Markdown files. 4 | 5 | Whenever you commit to this repository, GitHub Pages will run [Jekyll](https://jekyllrb.com/) to rebuild the pages in your site, from the content in your Markdown files. 6 | 7 | ### Markdown 8 | 9 | Markdown is a lightweight and easy-to-use syntax for styling your writing. It includes conventions for 10 | 11 | ```markdown 12 | Syntax highlighted code block 13 | 14 | # Header 1 15 | ## Header 2 16 | ### Header 3 17 | 18 | - Bulleted 19 | - List 20 | 21 | 1. Numbered 22 | 2. List 23 | 24 | **Bold** and _Italic_ and `Code` text 25 | 26 | [Link](url) and ![Image](src) 27 | ``` 28 | 29 | For more details see [GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/). 30 | 31 | ### Jekyll Themes 32 | 33 | Your Pages site will use the layout and styles from the Jekyll theme you have selected in your [repository settings](https://github.com/nainsys/PythonDeepLearning/settings). The name of this theme is saved in the Jekyll `_config.yml` configuration file. 34 | 35 | ### Support or Contact 36 | 37 | Having trouble with Pages? Check out our [documentation](https://help.github.com/categories/github-pages-basics/) or [contact support](https://github.com/contact) and we’ll help you sort it out. 38 | -------------------------------------------------------------------------------- /3./3.7.-modules/README.md: -------------------------------------------------------------------------------- 1 | # 3.7. 모듈\(Modules\) 2 | 3 | 일반적으로 모듈은 부품을 의미합니다. 프로그램에서 자주 사용되는 일반적인 기능을 모듈로 한번 만들어 두면, 필요할 때 마다 활용할 수 있습니다. 모듈을 사용하면 논리적으로 파이썬 코드를 구성할 수 있습니다. 관련 코드를 모듈로 그룹화하면 코드를 더 쉽게 이해하고 사용할 수 있습니다. 모듈은 바인딩하고 참조할 수 있는, 임의로 명명 된 속성을 가진 Python 객체를 말합니다. 간단히 말해, 모듈은 파이썬 코드로 구성된 이미 존재하는 파일입니다. 파이썬에서 모듈은 관련이 있는 함수나 변수 또는 클래스 들을 모아 놓은 파일입니다. 함수는 모듈의 한 형태입니다. 모듈이 함수보다 좀 더 큰 범위를 나타낸다. 모듈보다 더 큰 개념이 패키지\(package\)입니다. 모듈은 하나의 파이썬 파일이지만 패키지는 파이썬 모듈이 들어있는 디렉토리를 말합니다. 4 | 5 | 그동안 모듈을 몇 차례 사용해 본 적이 있습니다. 예를 들어, 제곱근을 구하는 함수 sys.path\(\)를 사용기 위해 import sys 명령을 실행해야 합니다. 이 때의 import 문은 모듈을 프로그램 안으로 가져와 사용하기 위한 명령이고, sys 모듈은 시스템과 관련된 기능을 모아 놓은 모듈입니다. 6 | 7 | 다음과 같은 support.py 파이썬 파일이 있다면 8 | 9 | ```python 10 | def print_func( par ): 11 | print "Hello : ", par 12 | return 13 | ``` 14 | 15 | 다음과 같은 import 문에 의해 모듈로 support.py 모듈을 사용할 수 있습니다. 16 | 17 | ```python 18 | # Import module support 19 | import support 20 | # Now you can call defined function that module as follows 21 | support.print_func("Zara") 22 | ``` 23 | 24 | Python의 from 문을 사용하면 모듈의 특정 속성을 현재 네임스페이스로 가져올 수 있습니다. 예를 들어 fib 모듈에서 fibonacci 함수를 가져오려면 다음과 같이 사용합니다. 25 | 26 | ```text 27 | from fib import fibonacci 28 | ``` 29 | 30 | 위의 from 문은 fib 모듈 전체를 현재 네임스페이스로 가져오지 않습니다. 이것은 모듈 fib에서 fibonacci라는 항목을 import 모듈의 전역 심볼 테이블로 가져옵니다. 31 | 32 | 다음 import 문을 사용하여 모듈의 모든 이름을 현재 네임스페이스로 가져올 수도 있습니다. 33 | 34 | ```text 35 | from modname import * 36 | ``` 37 | 38 | 이렇게 하면 모듈의 모든 항목을 현재 네임 스페이스로 쉽게 가져올 수 있지만, 이런 사용 방법은 권장하지 않는다고 합니다. 39 | 40 | -------------------------------------------------------------------------------- /2./2.1./2.1.1./3-nvidia-gpu.md: -------------------------------------------------------------------------------- 1 | # 3\) NVIDIA GPU 환경 설정하기 2 | 3 | 사용하는 컴퓨터에 NVIDIA Graphic Card 를 장착되어 있다면 NVIDIA CUDA, cuDNN 을 사용하여 GPU 환경에서 좀더 빠르게 실습할수 있습니다. 4 | 5 | GPU 를 이용한 프로그래밍을 하는 방법은 NVIDIA 의 CUDA 라이브러리를 사용하는 것입니다. CUDA 를 이용하면 C, C++ 등의 언어로 GPU 프로그래밍을 할 수 있습니다. 또한 CUDA 보다 high-level API 로 cuBLAS, cuDNN 등 이 있습니다. high-level API 의 경우 CUDA 를 기반으로 행렬 연산, 딥러닝 등을 구현하는 것에 초점을 맞추어져 있기 때문에 이러한 작업들에 GPU 를 더욱 쉽게 이용할 수 있습니다. 6 | 7 | CUDA를 설치하려면 먼저 내가 설치하고자 하는 tensorflow gpu와 호환되는 CUDA, cuDNN 버전을 확인해야 합니다. 호환되는 CUDA와 cuDNN 버전은 아래 링크에서 확인할 수 있습다. 8 | 9 | [https://www.tensorflow.org/install/source\_windows\#tested\_build\_configurations](https://www.tensorflow.org/install/source_windows#tested_build_configurations) 10 | 11 | 2021년 1/4 분기인 현재 까지 cuDNN 은 7.6. cuda는 10.1 을 설치하면 무난합니다. NVIDIA 사이트의 CUDA Archive에서 원하는 버전의 CUDA를 선택해서 다운로드한후 설치한다. 12 | 13 | •NVIDA CUDA Toolkit Archive 링크: [https://developer.nvidia.com/cuda-toolkit-archive](https://developer.nvidia.com/cuda-toolkit-archive) 14 | 15 | 그 다음 내 Tensorflow와 호환되면서 내 CUDA와도 호환되는 버전의 cuDNN을 다운로드하고 설치합니다. NVIDIA 회원가입을 해야 cuDNN을 다운로드할 수 있습니다. 16 | 17 | •NVIDIA cuDNN Archive 링크: [https://developer.nvidia.com/rdp/cudnn-archive](https://developer.nvidia.com/rdp/cudnn-archive) 18 | 19 | 다운로드한 cuDNN 파일의 압축을 풀고 각각의 폴더에 해당하는 파일들을 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v 버전의 폴더로 옮깁니다. 만약 CUDA 버전이 10.1이라면 옮길 경로는 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1이 됩니다. \(C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA에는 v버전명 폴더 하나만 있을 것이다. 그렇기 때문에 경로를 혼동할 일은 크게 없을 것 같다\) 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /4.-numpy-and-scipy/4.1-numpy/3.13.3.-shape-manipulation.md: -------------------------------------------------------------------------------- 1 | # 3.13.3. Shape Manipulation 2 | 3 | 배열은 각 축을 따라 요소들의 수만큼 주어진 모양을 가집니다. 배열의 모양은 다양한 명령으로 변경할 수 있습니다. 다음 세 명령은 모두 수정된 배열을 반환하지만 원래 배열은 변경하지 않습니다. 4 | 5 | ```python 6 | import numpy as np 7 | 8 | a = np.floor(10*np.random.random((3,4))) 9 | print("3행 4열 배열 생성\n", a) 10 | print("a 배열의 shape = ",a.shape) 11 | 12 | print("a.ravel 결과값\n",a.ravel()) # returns the array, flattened 13 | print("a.reshape(6,2) 결과값\n",a.reshape(6,2)) # returns the array with a modified shape 14 | print("a.T 결과값\n",a.T) # returns the array, transposed 15 | print("a.T.shape 결과값 = ",a.T.shape) 16 | print("a.shape 결과값 = ",a.shape) 17 | ``` 18 | 19 | 위의 코드를 수행 하면 다음과 같은 결과를 출력합니다. 20 | 21 | ```text 22 | 3행 4열 배열 생성 23 | [[8. 0. 1. 7.] 24 | [9. 2. 6. 1.] 25 | [9. 9. 3. 5.]] 26 | a 배열의 shape = (3, 4) 27 | a.ravel 결과값 28 | [8. 0. 1. 7. 9. 2. 6. 1. 9. 9. 3. 5.] 29 | a.reshape(6,2) 결과값 30 | [[8. 0.] 31 | [1. 7.] 32 | [9. 2.] 33 | [6. 1.] 34 | [9. 9.] 35 | [3. 5.]] 36 | a.T 결과값 37 | [[8. 9. 9.] 38 | [0. 2. 9.] 39 | [1. 6. 3.] 40 | [7. 1. 5.]] 41 | a.T.shape 결과값 = (4, 3) 42 | a.shape 결과값 = (3, 4) 43 | ``` 44 | 45 | np.random.random은 0 ~ 1 사이의 균등 분포로 표본을 추출합니다. np.floor 함수로 최대 정수로 변환합니다. 따라서 a = np.floor\(10\*np.random.random\(\(3,4\)\)\) 코드에 의해 3행 4열의 1에서 10사의의 값을 갖는 랜덤 정수 배열이 생성 됩니다. 46 | 47 | ravel 함수는 다차원 배열\(array\)을 1차원 배열로 평평하게 펴주는 함수입니다. 배열의 차원\(Dimension\)을 재구조화, 변경하고자 할 때 reshape\(\) 메소드를 사용합니다. 가령, 3개의 행과 4개의 열로 구성된 2차원의 배열로 재설정하고 싶으면 reshape\(3, 4\)처럼 사용하면 됩니다. 48 | 49 | T 함수는 각 요소들을 행, 열을 바꾸는 전치\(transpose\)를 수행합니다. 50 | 51 | -------------------------------------------------------------------------------- /4.-numpy-and-scipy/4.1-numpy/4.1.2.-indexing-slicing-iterating.md: -------------------------------------------------------------------------------- 1 | # 4.1.2. Indexing, Slicing 그리고 Iterating 2 | 3 | 1 차원 배열은 리스트 및 기타 파이썬 시퀀스와 마찬가지로 색인 생성, 슬라이스 및 반복 될 수 있습니다. 다차원 배열은 축 당 하나의 인덱스를 가질 수 있습니다. 이러한 인덱스는 쉼표로 구분된 튜플로 제공됩니다. 4 | 5 | ```python 6 | import numpy as np 7 | 8 | a = np.arange(10)**3 9 | print("1부터 10까지 3자승 한 배열 a =",a) 10 | print("a 배열의 두번째 인덱스 값 = ", a[2]) 11 | print("a 배열의 2:5 인덱스 값 = ", a[2:5]) 12 | a[0:6:2] = -1000 # from start to position 6, exclusive, set every 2nd element to -1000 13 | print("a 배열의 0번째 부터 6번째 까지 모든 두번째 값에 -1000을 대입한 값 = ", a) 14 | print("a 배열을 뒤집은 값 = ", a[ : :-1]) # reversed a 15 | 16 | #각 행마다 10씩 증가하는 배열 생성 17 | def f(x,y): 18 | return 10*x+y 19 | 20 | ab = np.fromfunction(f,(5,4),dtype=int) 21 | print("각 행마다 10씩 증가하는 배열 생성\n",ab) 22 | print("생성된 배열의 2행 3열 값 = ",ab[2,3]) 23 | print("생성된 배열 각행 2열 값 = ",ab[0:5, 1]) 24 | print("생성된 배열 각행 1행~2행 값 \n ",ab[1:3, : ]) 25 | ``` 26 | 27 | 위 코드를 실행하면 다음과 같은 결과가 출력 됩니다. 28 | 29 | ```text 30 | 1부터 10까지 3자승 한 배열 a = [ 0 1 8 27 64 125 216 343 512 729] 31 | a 배열의 두번째 인덱스 값 = 8 32 | a 배열의 2:5 인덱스 값 = [ 8 27 64] 33 | a 배열의 0번째 부터 6번째 까지 모든 두번째 값에 -1000을 대입한 값 = [-1000 1 -1000 27 -1000 125 216 343 512 729] 34 | a 배열을 뒤집은 값 = [ 729 512 343 216 125 -1000 27 -1000 1 -1000] 35 | 각 행마다 10씩 증가하는 배열 생성 36 | [[ 0 1 2 3] 37 | [10 11 12 13] 38 | [20 21 22 23] 39 | [30 31 32 33] 40 | [40 41 42 43]] 41 | 생성된 배열의 2행 3열 값 = 23 42 | 생성된 배열 각행 2열 값 = [ 1 11 21 31 41] 43 | 생성된 배열 각행 1행~2행 값 44 | [[10 11 12 13] 45 | [20 21 22 23]] 46 | ``` 47 | 48 | -------------------------------------------------------------------------------- /2.-1/1./1.1.3.-github.md: -------------------------------------------------------------------------------- 1 | # 2.1.3. 깃허브\(GitHub\) 2 | 3 | 4 | 깃\(Git\)은 여러 개발자가 참여하는 프로젝트의 어떤 부분도 겹쳐 쓰지 않게 프로젝트의 변경을 관리하는 버전관리 소프트웨어입니다. 리눅스의 개발자 리누스 토발즈가 리눅스를 더 잘 만들기 위해 만든 프로젝트 관리 툴이 깃\(Git\)입니다. 5 | 6 | Git은 소프트웨어를 개발하는 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료, 공개소프트웨어입니다. 깃\(Git\)은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템입니다. 7 | 8 | Git을 사용하면 소프트웨어 개발에서 소스 코드 관리 등 어떠한 집합의 파일의 변경사항을 지속적으로 추적하기 위해 사용 소스코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능합니다. 즉 Branch를 통해 개발한 뒤, 본 프로그램에 합치는 방식\(Merge\)으로 개발을 진행할 수 있습니다. 분산 버전관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있으며, 중앙 저장소가 날라가 버려도 다시 원상복구 할 수 있습니다. 팀 프로젝트가 아닌, 개인 프로젝트일지라도 Git을 통해 버전 관리를 하면 체계적인 개발이 가능해지고, 프로그램이나 패치를 배포하는 과정도 간단해 집니다. 9 | 10 | 깃허브\(GitHub\)는 분산 버전 관리 툴인 깃\(Git\)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스입니다. 11 | 12 | SW개발자들 사이에서 널리 사용되는 깃허브는 오픈소스 접근 방식을 통해 다른 사람들의 코드를 연구하고, 배우고, 자신들의 목적을 위해 코드를 수정·변경 및 재배포까지 할 수 있습니다. 깃허브의 툴은 SW개발자들이 코드를 저장하고 업데이트를 추적하고 문제를 논의하는 데 필수적인 통로를 제공합니다. GitHub는 영리적인 서비스와 오픈소스를 위한 무상 서비스를 모두 제공합니다. 현재 가장 인기 있는 오픈 소스 코드 저장소입니다. 13 | 14 | GitHub는 Git을 지원하는 서비스 중 가장 인기가 있고 유명합니다. 때문에, 유명한 오픈 소스 라이브러리들이 많이 사용하고 있습니다. 예를 들면, TensorFlow, CNTK 등 많은 오픈 소스가 GitHub에 공유되고 있습니다. 깃허브에는 8,500만 개 정도의 프로젝트 저장소가 있습니다. 깃허브의 툴은 SW개발자들이 코드를 저장하고 업데이트를 추적하고 문제를 논의하는 데 있어 필수적입니다. 영향력도 막강합니하다. 전세계 150만개 이상의 조직에서 2300만명 이상이 사용하고 있습니다. 15 | 16 | 2018년 마이크로소프트가 공식적으로 세계 최대 오픈소스 코드 공유 플랫폼인 깃허브를 인수했습니다. . 마이크로소프트는 세계 최대 SW개발 플랫폼 깃허브를 인수하면서 단숨에 전세계 2800만명 이상의 개발자를 거느리는 플랫폼을 갖게 됐습니다. 2000년대 중반까지만 해도 오픈소스 진영을 적대시하며 ‘박멸’ 대상으로 꼽기까지 했던 마이크로소프트가 오픈소스 플랫폼을 인수해 사업을 혁신하고 생태계를 확대하는 수단으로 삼겠다고 밝혔습니다. 마이크로소프트도 이제는 오픈 소스 시대라는 것을 인정하는 것입니다 17 | 18 | -------------------------------------------------------------------------------- /1./1.5.-keras.md: -------------------------------------------------------------------------------- 1 | # 1.5. 케라스\(Keras\) 2 | 3 | 4 | 케라스\(Keras\)는 파이썬으로 작성된 오픈 소스 신경망 라이브러리입니다. 케라스는 딥러닝 비전문가라도 각자 분야에서 손쉽게 딥러닝 모델을 개발하고 활용할 수 있도록 직관적인 API를 제공하고 있습니다. 케라스는 텐서플로 위에서 동작하는 라이브러리 입니다. 처음 머신러닝, 딥러닝을 시작하고 매우 간단한 것을 제작하거나 빠른 시간 내에 프로토타이핑을 하고자 한다면 Keras가 훨씬 좋은 선택일 수 있습니다. 5 | 6 | 비교적 단순한 신경망을 구성하거나 기존의 갖추어진 기능만을 사용한다면 Keras만으로 충분할 수 있습니다. 하지만 역시 Tensorflow를 사용하는 쪽이 훨씬 더 디테일한 조작이 가능합니다. 따라서 사용 목적에 따라서 어느쪽을 사용할지 선택하는 것이 좋습니다. 7 | 8 | Keras는 빠르게 딥러닝 연구 및 실험을 가능하게 하는 데에 중점을 두고 개발되었습니다. 가능한 개발 시간을 최소화하면서, 빠르게 결과를 도출할 수 있게 합니다. 9 | 10 | Keras 는 다음과 같은 특징이 있습니다. 11 | 12 | 1\) 사용자 친근성\(User Friendliness\) 13 | 14 | Keras는 기계가 아닌 인간을 위해 설계된 API\(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스\)입니다. Keras는 일관성 있고 간단한 API를 제공하고, 일반적으로 필요한 사용자 작업의 수를 최소화하며, 사용자 오류 시 명확하고 실용적인 피드백을 제공합니다. 15 | 16 | 2\) 모듈성\(Modularity\) 17 | 18 | 모델은 가능한 최소한으로의 제한하여 독립적으로 생성가능 합니다. 또한, 신경층\(Neural Layers\), 비용함수\(Cost Functions\), 최적화기\(Optimizers\), 초기화 스킴\(Initialization Schemes\), 활성 함수\(Activation Functions\), 정규화 스킴\(Regularization Schemes\)은 모두 새로운 모델을 생성하기 위해 결합할 수있는 독립 실행형 모듈입니다. 19 | 20 | 3\) 쉬운 확장성\(Easy Extensibility\) 21 | 22 | 새로운 모듈은 \(새로운 클래스와 함수로서\) 추가하기 쉽습니다. 새로운 모듈을 쉽게 만들 수 있기 때문에 Keras가 고급 연구에 적합합니다. 23 | 24 | 4\) Python 작업\(Work with Python\) 25 | 26 | 모델은 작고, 디버그하기 쉽고, 확장성이 용이한 Python을 기반으로 두고 있습니다. 27 | 28 | 그러나 코드에 오류가 발생하였을 경우 케라스 자체 에러일 수도 있고 사용한 백엔드\(텐서플로우 등\) 문제일 수도 있기에 원인 찾기가 쉽지 않습니다. 또한 문서화가 제대로 되어 있지 않습니다. 제공되는 함수 목록은 빨리 업데이트 되는 편이지만 함수에 대한 설명을 찾기가란 쉽지 않습니다. 29 | 30 | 직관성이 떨어지고 진입 장벽이 높은 Tensorflow와는 달리 일반 Python API 형태로 제공하다보니 사용하기가 훨씬 쉽고 사용자 친화적인 환경을 제공하고 있습니다. 향후 Python 표준 딥러닝 API 형태로 자리 잡을 가능성이 있습니다. 31 | 32 | -------------------------------------------------------------------------------- /2.-1/1./1.1.2.-open-source.md: -------------------------------------------------------------------------------- 1 | # 2.1.2. 오픈소스\(Open Source\) 2 | 3 | 4 | “삼성전자 제품을 만드는 데 90%는 오픈소스를 이용하고 있습니다. 오픈소스 없이는 갤럭시 핸드폰을 포함해 거의 모든 제품을 만들어낼 수 없다고 볼 수 있습니다. 심각할 정도로 상당히 중요한 기술력입니다.” ‘2018 오픈소스 성공사례 세미나’에서 삼성전자 임원이 한 말입니다. 5 | 6 | 소스 코드가 공개\(open\)된 소프트웨어를 오픈소스라고 말합니다. 대부분의 오픈 소스 소프트웨어는 무료로 사용 가능하기 때문에 프리웨어\(freeware\)와 헷갈리는 경우가 많지만, 프리웨어는 무료로 사용 가능한 프로그램이고, 오픈 소스는 소스 코드가 공개된 프로그램이기 때문에 엄연히 다른 개념입니이다\(예를 들어, 오픈 소스 소프트웨어를 돈 받고 파는 경우도 있습니다.\). 자유 소프트웨어\(free software\)와 비슷하지만, 오픈 소스 소프트웨어가 자유 소프트웨어보다 조금 더 상위의 개념입니다. 7 | 8 | 프리웨어는 대부분 상업적 이용이 불가능하지만 오픈소스는 상업적으로도 많이 활용 됩니다. 그래서 안드로이드OS는 오픈소스로 개발되었지만 삼성전자, 화웨이와 같은 회사들이 소스코드를 가져다가 그들이 원하는 방향으로 수정해서 자신들의 제품에 탑재 할 수 있는 것입니다. 9 | 10 | 일반 사용자 입장에서는 프리웨어나 오픈 소스 소프트웨어나 단순히 공짜로 사용할 수 있다는 점에서는 비슷할 수 있지만, 소스 코드를 보고 이해할 수 있고, 수정할 수 있는 개발자 입장에서는 크게 다릅니다. 예를 들어, 상용 또는 프리웨어 프로그램을 사용하는 사람들은 버그를 발견했다 하더라도 소스 코드를 모르니 수정할 수 없고, 사용자가 새로운 아이디어가 떠올랐다 해도 그것을 곧바로 프로그램에 적용시킬 수도 없습니다. 11 | 12 | 소프트웨어 산업 초기에는 소프트웨어 개발 기업들이 절대 소스코드를 공개하지 않고 철저하게 보호했었습니다. 기업들은 특허와 지적 재산권을 사용해 법적으로 소스코드를 보호했습니다. 그러나 해커와 프로그래머들로 이루어진 그룹들이 소프트웨어는 무료로 배포되어야 한다고 주장했고 그 대표적인 인물이 자유소프트웨어재단의 리처드 스톨만, 리눅스를 만든 리누즈 토발즈\(Linus Torvalds\)입니다. 리눅스는 점점 더 정교하게 발전했고 대성공을 거두어 현재 가장 많은 컴퓨터가 사용하는 운영체제\(OS\)가 되었습니다. 13 | 14 | 리눅스의 성공은 오픈소스의 협업 모델이 상업적 기업보다 뛰어날 수 있다는걸 증명했습니다. 그 이후 많은 소프트웨어들이 오픈소스로 개발 되었고 이제는 오픈소스가 대세가 되었습니다. 15 | 16 | 오픈소스는 빅데이터, 사물인터넷, 소셜 미디어, 클라우드 등 모든 IT 트렌드의 대세로 자리잡고 있습니다. 안드로이드\(모바일 운영체제\) 뿐만이 아니라 Axzure\(클라우드\), MySQL\(데이터베이스\), Apache\(웹서버\), Firefox\(웹브라우저\), Hadoop\(빅데이터\)등 거의 모든 분야에서 오픈소스 제품들이 큰 성과를 거두고 있습니다. 소프트웨어 개발방식이 급변하는 시대에 오픈소스는 선택 사항이 아니라 필수 사항이 되었습니다. 17 | 18 | 이제는 나 홀로 혁신할 수 있는 시대가 아닙니다. 혼자서 혁신하려 한다면 오히려 도태될 가능성이 더 클 것입니다. 오픈소스 참여자들이 하는 말입니다. 19 | 20 | -------------------------------------------------------------------------------- /2.-1/1./1.1.2.-open-source/README.md: -------------------------------------------------------------------------------- 1 | # 2.1.2. 오픈소스\(Open Source\) 2 | 3 | 4 | “삼성전자 제품을 만드는 데 90%는 오픈소스를 이용하고 있습니다. 오픈소스 없이는 갤럭시 핸드폰을 포함해 거의 모든 제품을 만들어낼 수 없다고 볼 수 있습니다. 심각할 정도로 상당히 중요한 기술력입니다.” ‘2018 오픈소스 성공사례 세미나’에서 삼성전자 임원이 한 말입니다. 5 | 6 | 소스 코드가 공개\(open\)된 소프트웨어를 오픈소스라고 말합니다. 대부분의 오픈 소스 소프트웨어는 무료로 사용 가능하기 때문에 프리웨어\(freeware\)와 헷갈리는 경우가 많지만, 프리웨어는 무료로 사용 가능한 프로그램이고, 오픈 소스는 소스 코드가 공개된 프로그램이기 때문에 엄연히 다른 개념입니이다\(예를 들어, 오픈 소스 소프트웨어를 돈 받고 파는 경우도 있습니다.\). 자유 소프트웨어\(free software\)와 비슷하지만, 오픈 소스 소프트웨어가 자유 소프트웨어보다 조금 더 상위의 개념입니다. 7 | 8 | 프리웨어는 대부분 상업적 이용이 불가능하지만 오픈소스는 상업적으로도 많이 활용 됩니다. 그래서 안드로이드OS는 오픈소스로 개발되었지만 삼성전자, 화웨이와 같은 회사들이 소스코드를 가져다가 그들이 원하는 방향으로 수정해서 자신들의 제품에 탑재 할 수 있는 것입니다. 9 | 10 | 일반 사용자 입장에서는 프리웨어나 오픈 소스 소프트웨어나 단순히 공짜로 사용할 수 있다는 점에서는 비슷할 수 있지만, 소스 코드를 보고 이해할 수 있고, 수정할 수 있는 개발자 입장에서는 크게 다릅니다. 예를 들어, 상용 또는 프리웨어 프로그램을 사용하는 사람들은 버그를 발견했다 하더라도 소스 코드를 모르니 수정할 수 없고, 사용자가 새로운 아이디어가 떠올랐다 해도 그것을 곧바로 프로그램에 적용시킬 수도 없습니다. 11 | 12 | 소프트웨어 산업 초기에는 소프트웨어 개발 기업들이 절대 소스코드를 공개하지 않고 철저하게 보호했었습니다. 기업들은 특허와 지적 재산권을 사용해 법적으로 소스코드를 보호했습니다. 그러나 해커와 프로그래머들로 이루어진 그룹들이 소프트웨어는 무료로 배포되어야 한다고 주장했고 그 대표적인 인물이 자유소프트웨어재단의 리처드 스톨만, 리눅스를 만든 리누즈 토발즈\(Linus Torvalds\)입니다. 리눅스는 점점 더 정교하게 발전했고 대성공을 거두어 현재 가장 많은 컴퓨터가 사용하는 운영체제\(OS\)가 되었습니다. 13 | 14 | 리눅스의 성공은 오픈소스의 협업 모델이 상업적 기업보다 뛰어날 수 있다는걸 증명했습니다. 그 이후 많은 소프트웨어들이 오픈소스로 개발 되었고 이제는 오픈소스가 대세가 되었습니다. 15 | 16 | 오픈소스는 빅데이터, 사물인터넷, 소셜 미디어, 클라우드 등 모든 IT 트렌드의 대세로 자리잡고 있습니다. 안드로이드\(모바일 운영체제\) 뿐만이 아니라 Axzure\(클라우드\), MySQL\(데이터베이스\), Apache\(웹서버\), Firefox\(웹브라우저\), Hadoop\(빅데이터\)등 거의 모든 분야에서 오픈소스 제품들이 큰 성과를 거두고 있습니다. 소프트웨어 개발방식이 급변하는 시대에 오픈소스는 선택 사항이 아니라 필수 사항이 되었습니다. 17 | 18 | 이제는 나 홀로 혁신할 수 있는 시대가 아닙니다. 혼자서 혁신하려 한다면 오히려 도태될 가능성이 더 클 것입니다. 오픈소스 참여자들이 하는 말입니다. 19 | 20 | -------------------------------------------------------------------------------- /1./1.1.-artificial-intelligence/1.1.2.-open-source.md: -------------------------------------------------------------------------------- 1 | # 1.1.2. 오픈소스\(Open Source\) 2 | 3 | 4 | “삼성전자 제품을 만드는 데 90%는 오픈소스를 이용하고 있습니다. 오픈소스 없이는 갤럭시 핸드폰을 포함해 거의 모든 제품을 만들어낼 수 없다고 볼 수 있습니다. 심각할 정도로 상당히 중요한 기술력입니다.” ‘2018 오픈소스 성공사례 세미나’에서 삼성전자 임원이 한 말입니다. 5 | 6 | 소스 코드가 공개\(open\)된 소프트웨어를 오픈소스라고 말합니다. 대부분의 오픈 소스 소프트웨어는 무료로 사용 가능하기 때문에 프리웨어\(freeware\)와 헷갈리는 경우가 많지만, 프리웨어는 무료로 사용 가능한 프로그램이고, 오픈 소스는 소스 코드가 공개된 프로그램이기 때문에 엄연히 다른 개념입니이다\(예를 들어, 오픈 소스 소프트웨어를 돈 받고 파는 경우도 있습니다.\). 자유 소프트웨어\(free software\)와 비슷하지만, 오픈 소스 소프트웨어가 자유 소프트웨어보다 조금 더 상위의 개념입니다. 7 | 8 | 프리웨어는 대부분 상업적 이용이 불가능하지만 오픈소스는 상업적으로도 많이 활용 됩니다. 그래서 안드로이드OS는 오픈소스로 개발되었지만 삼성전자, 화웨이와 같은 회사들이 소스코드를 가져다가 그들이 원하는 방향으로 수정해서 자신들의 제품에 탑재 할 수 있는 것입니다. 9 | 10 | 일반 사용자 입장에서는 프리웨어나 오픈 소스 소프트웨어나 단순히 공짜로 사용할 수 있다는 점에서는 비슷할 수 있지만, 소스 코드를 보고 이해할 수 있고, 수정할 수 있는 개발자 입장에서는 크게 다릅니다. 예를 들어, 상용 또는 프리웨어 프로그램을 사용하는 사람들은 버그를 발견했다 하더라도 소스 코드를 모르니 수정할 수 없고, 사용자가 새로운 아이디어가 떠올랐다 해도 그것을 곧바로 프로그램에 적용시킬 수도 없습니다. 11 | 12 | 소프트웨어 산업 초기에는 소프트웨어 개발 기업들이 절대 소스코드를 공개하지 않고 철저하게 보호했었습니다. 기업들은 특허와 지적 재산권을 사용해 법적으로 소스코드를 보호했습니다. 그러나 해커와 프로그래머들로 이루어진 그룹들이 소프트웨어는 무료로 배포되어야 한다고 주장했고 그 대표적인 인물이 자유소프트웨어재단의 리처드 스톨만, 리눅스를 만든 리누즈 토발즈\(Linus Torvalds\)입니다. 리눅스는 점점 더 정교하게 발전했고 대성공을 거두어 현재 가장 많은 컴퓨터가 사용하는 운영체제\(OS\)가 되었습니다. 13 | 14 | 리눅스의 성공은 오픈소스의 협업 모델이 상업적 기업보다 뛰어날 수 있다는걸 증명했습니다. 그 이후 많은 소프트웨어들이 오픈소스로 개발 되었고 이제는 오픈소스가 대세가 되었습니다. 15 | 16 | 오픈소스는 빅데이터, 사물인터넷, 소셜 미디어, 클라우드 등 모든 IT 트렌드의 대세로 자리잡고 있습니다. 안드로이드\(모바일 운영체제\) 뿐만이 아니라 Axzure\(클라우드\), MySQL\(데이터베이스\), Apache\(웹서버\), Firefox\(웹브라우저\), Hadoop\(빅데이터\)등 거의 모든 분야에서 오픈소스 제품들이 큰 성과를 거두고 있습니다. 소프트웨어 개발방식이 급변하는 시대에 오픈소스는 선택 사항이 아니라 필수 사항이 되었습니다. 17 | 18 | 이제는 나 홀로 혁신할 수 있는 시대가 아닙니다. 혼자서 혁신하려 한다면 오히려 도태될 가능성이 더 클 것입니다. 오픈소스 참여자들이 하는 말입니다. 19 | 20 | -------------------------------------------------------------------------------- /2.-1/1./1.1.4.-wiki.md: -------------------------------------------------------------------------------- 1 | # 2.1.4. 위키 Wiki 2 | 3 | 4 | 위키\(wiki\)는 불특정 다수가 협업을 통해 직접 내용과 구조를 수정할 수 있는 웹사이트를 말합니다. 5 | 6 | 일반적인 위키에서 텍스트는 단순화된 마크업 언어를 이용하여 작성되며, 리치 텍스트 에디터의 도움을 받아 편집하기도 합니다. 위키는 지식경영이나 기록 등 다양한 용도로 이용됩니다. 공동체용 웹사이트나 조직 내 인트라넷에 쓰이기도 합니다. 그러나 주로 개인적인 용도로 이용되는 위키도 있는데, 이를 개인 위키라고 합니다. 7 | 8 | 전통적인 고정 웹사이트들은 내용을 읽는 것, 포럼에 기여하는 것, 사이트 주인이나 물건을 살 때 이메일 코멘트를 다는 것 이외에는 개인 사용자에게 허락하지 않는 경우가 많습니다. 9 | 10 | 그러나 위키는 일부 혹은 모든 사용자들이 사이트에 페이지와 내용을 빠르고 쉽게 추가, 제거, 편집할 수 있는 웹사이트의 유형입니다. 11 | 12 | 최초의 위키 소프트웨어인 위키위키웹\(WikiWikiWeb\)을 만든 워드 커닝엄은 위키를 "동작하는 가장 단순한 온라인 데이터베이스"라고 설명했습니다. "위키"는 "빠른"을 뜻하는 하와이어 "wiki"에서 왔습니다. 13 | 14 | 워드 커닝엄이 보 뢰프와 같이 쓴 《위키 방식: 웹 상의 빠른 협업\(The Wiki Way: Quick Collaboration on the Web\)》이라는 책에서, 위키의 가장 핵심적인 개념을 다음과 같이 꼽았습니다. 15 | 16 | * 사이트를 방문한 누구나 위키 웹사이트 내의 문서를 고치거나 새로 만들 수 있다. 이를 위해 기본적인 웹브라우저만 있으면 되며, 추가적인 확장 기능을 요구하지 않는다. 17 | * 위키는 서로 다른 문서들을 단순히 링크하는 것 만으로도 의미있는 주제간의 연계를 만들어내고 해당 문서가 존재하는지 아닌지 까지도 보여줄 수 있다. 18 | * 위키는 가벼운 방문자를 위해 잘 만들어진 사이트가 아니다. 하지만, 지속적으로 웹사이트의 풍경을 변화시켜 방문자가 그 변화와 협력의 지속적인 과정에 참여하도록 한다. 19 | 20 | 위키는 간단한 마크업 언어와 웹 브라우저를 이용, 함께 문서를 작성하는 공동체를 가능케 합니다. 위키 웹사이트의 한 문서는 "위키 문서"라 부르며, 하이퍼링크로 서로 연결된 전체 문서를 "위키"라 합니다. 위키는 본질적으로 정보를 만들고, 찾아보고, 검색하기 위한 데이터베이스입니다. 위키는 비선형적인, 진화하는, 복잡하게 얽힌 문서, 토론, 상호 작용을 할 수 있게 돕는 도구 입니다. 21 | 22 | 위키 기술을 정의하는 특징은 문서를 간단히 만들고 고칠 수 있다는 점입니다. 일반적으로 수정이 반영되기 전에 승인이나 검토의 과정이 없습니다. 대부분의 위키는 사용자 등록을 요구하지 않고, 일반에게 공개되어 있습니다. 많은 편집자가 실시간으로 만들며, 즉시 온라인으로 배포됩니다. 이러한 점에서 가짜 정보, 시스템의 남용을 유발할 수 있지만 장점이 더 많다는 것은 인정해야 합니다. 23 | 24 | 위키백과\(위키피디아, Wikipedia\)는 위키를 이용하여 전 세계 사람들이 함께 만들어가는 웹 기반의 다언어 백과사전입니다. 위키백과는 중립적이고 검증 가능한 자유 콘텐츠 백과사전의 제공을 목적으로 하는 프로젝트로, 누구나 참여하여 문서를 수정하고 발전시킬 수 있습니다. 25 | 26 | 위키백과의 모든 문서는 크리에이티브 커먼즈 저작자표시-동일조건 변경허락에 따라 사용할 수 있으며, 복사, 수정과 배포가 자유롭고 상업적 목적으로도 사용이 가능합니다. 27 | 28 | -------------------------------------------------------------------------------- /1./1.1.-artificial-intelligence/1.1.4.-wiki.md: -------------------------------------------------------------------------------- 1 | # 1.1.4. 위키 Wiki 2 | 3 | 4 | 위키\(wiki\)는 불특정 다수가 협업을 통해 직접 내용과 구조를 수정할 수 있는 웹사이트를 말합니다. 5 | 6 | 일반적인 위키에서 텍스트는 단순화된 마크업 언어를 이용하여 작성되며, 리치 텍스트 에디터의 도움을 받아 편집하기도 합니다. 위키는 지식경영이나 기록 등 다양한 용도로 이용됩니다. 공동체용 웹사이트나 조직 내 인트라넷에 쓰이기도 합니다. 그러나 주로 개인적인 용도로 이용되는 위키도 있는데, 이를 개인 위키라고 합니다. 7 | 8 | 전통적인 고정 웹사이트들은 내용을 읽는 것, 포럼에 기여하는 것, 사이트 주인이나 물건을 살 때 이메일 코멘트를 다는 것 이외에는 개인 사용자에게 허락하지 않는 경우가 많습니다. 9 | 10 | 그러나 위키는 일부 혹은 모든 사용자들이 사이트에 페이지와 내용을 빠르고 쉽게 추가, 제거, 편집할 수 있는 웹사이트의 유형입니다. 11 | 12 | 최초의 위키 소프트웨어인 위키위키웹\(WikiWikiWeb\)을 만든 워드 커닝엄은 위키를 "동작하는 가장 단순한 온라인 데이터베이스"라고 설명했습니다. "위키"는 "빠른"을 뜻하는 하와이어 "wiki"에서 왔습니다. 13 | 14 | 워드 커닝엄이 보 뢰프와 같이 쓴 《위키 방식: 웹 상의 빠른 협업\(The Wiki Way: Quick Collaboration on the Web\)》이라는 책에서, 위키의 가장 핵심적인 개념을 다음과 같이 꼽았습니다. 15 | 16 | * 사이트를 방문한 누구나 위키 웹사이트 내의 문서를 고치거나 새로 만들 수 있다. 이를 위해 기본적인 웹브라우저만 있으면 되며, 추가적인 확장 기능을 요구하지 않는다. 17 | * 위키는 서로 다른 문서들을 단순히 링크하는 것 만으로도 의미있는 주제간의 연계를 만들어내고 해당 문서가 존재하는지 아닌지 까지도 보여줄 수 있다. 18 | * 위키는 가벼운 방문자를 위해 잘 만들어진 사이트가 아니다. 하지만, 지속적으로 웹사이트의 풍경을 변화시켜 방문자가 그 변화와 협력의 지속적인 과정에 참여하도록 한다. 19 | 20 | 위키는 간단한 마크업 언어와 웹 브라우저를 이용, 함께 문서를 작성하는 공동체를 가능케 합니다. 위키 웹사이트의 한 문서는 "위키 문서"라 부르며, 하이퍼링크로 서로 연결된 전체 문서를 "위키"라 합니다. 위키는 본질적으로 정보를 만들고, 찾아보고, 검색하기 위한 데이터베이스입니다. 위키는 비선형적인, 진화하는, 복잡하게 얽힌 문서, 토론, 상호 작용을 할 수 있게 돕는 도구 입니다. 21 | 22 | 위키 기술을 정의하는 특징은 문서를 간단히 만들고 고칠 수 있다는 점입니다. 일반적으로 수정이 반영되기 전에 승인이나 검토의 과정이 없습니다. 대부분의 위키는 사용자 등록을 요구하지 않고, 일반에게 공개되어 있습니다. 많은 편집자가 실시간으로 만들며, 즉시 온라인으로 배포됩니다. 이러한 점에서 가짜 정보, 시스템의 남용을 유발할 수 있지만 장점이 더 많다는 것은 인정해야 합니다. 23 | 24 | 위키백과\(위키피디아, Wikipedia\)는 위키를 이용하여 전 세계 사람들이 함께 만들어가는 웹 기반의 다언어 백과사전입니다. 위키백과는 중립적이고 검증 가능한 자유 콘텐츠 백과사전의 제공을 목적으로 하는 프로젝트로, 누구나 참여하여 문서를 수정하고 발전시킬 수 있습니다. 25 | 26 | 위키백과의 모든 문서는 크리에이티브 커먼즈 저작자표시-동일조건 변경허락에 따라 사용할 수 있으며, 복사, 수정과 배포가 자유롭고 상업적 목적으로도 사용이 가능합니다. 27 | 28 | -------------------------------------------------------------------------------- /2./2.1./2.1.5./3.md: -------------------------------------------------------------------------------- 1 | # 2\) 파이참 환경 설정 2 | 3 | 4 | 파이참의 File --> Settings 를 선택하면 파이참의 기본 설정을 할 수 있습니다. 5 | 6 | ![](../../../.gitbook/assets/21531.png) 7 | 8 | 대부분은 그대로 사용해도 무방하지만 대표적인 설정 몇 가지만 소개합니다. 9 | 10 | Appearance and Behavior ==> Appearance 11 | 12 | - Theme: 파이참 화면 테마를 변경 할 수 있습니다. 흰 바탕을 원한다면 ‘IntelliJ’를 선택하면 됩니다. 13 | 14 | - 폰트를 변경 할 수 있습니다. 15 | 16 | - Antialiasing: 텍스트를 부드럽게 하고 더 자세하게 렌더링 할 수 있습니다. 17 | 18 | Keymap: 단축키들을 설정 합니다. 19 | 20 | Editor ==> General ==> Highlight on Caret Movement : 열고 닫는 괄호의 강조 21 | 22 | 나머지 설정들은 다음 링크의 Jetbrains 도움말 파일들을 참조하면 됩니다. 23 | 24 | [https://www.jetbrains.com/help/pycharm/settings-preferences-dialog.html](https://www.jetbrains.com/help/pycharm/settings-preferences-dialog.html) 25 | 26 | 기타 파이참을 사용할 때 유용한 단축키 및 기능 몇 가지 소개합니다. 27 | 28 | F3 : 변수 또는 함수 tracking 29 | 30 | Alt + Shift + R : 함수, 파일\(모듈\), 변수명 한꺼번에 변환하기. 31 | 32 | Alt + Shift + X : 해당 코드 실행 33 | 34 | Ctrl + G : 해당 변수, 파일, 함수가 사용된 코드 찾기. 35 | 36 | Ctrl + L : 특정 번호의 Line으로 이동하기. 37 | 38 | Ctrl + H : 프로젝트 전체를 대상으로 특정 문자열 검색 혹은 변환하기. 39 | 40 | Shift 두번 : 프로젝트 전체에서 자신이 작업하고 싶은 파일 검색하여 열기. \(Search Everywhere\) 41 | 42 | Ctrl + F : 현재 작업중인 파일 안에서 특정 문자열 검색 혹은 변환하기. 43 | 44 | Ctrl + Shift + F : 현재 커서가 놓여있는 파일의 코드 indentation 을 자동으로 정렬합니다. \(자동 코드 정리\) 45 | 46 | Ctrl + Alt + U : 어떤 변수 위에 커서를 두고 누르면 해당 변수의 Dependency 를 한눈에 볼 수 있는 Class Diagram 을 표시합니다. 47 | 48 | 변수 및 함수 선언부 보여주기: 파이참에서 가장 유용하고 많이 사용하는 기능 중 하나는 변수 및 함수 선언부로 들어가기 기능입니다. 이 기능은 특히 여러 모듈 구조를 파악하는데 사용됩니다. Ctrl 단축키를 누른 채로 특정 함수 및 변수를 클릭하면 해당 변수 및 함수의 선언부로 이동하게 됩니다. 49 | 50 | 다음 링크에서 한 페이지로 정리된 단축키들을 확인 할 수 있습니다. 51 | 52 | [https://resources.jetbrains.com/storage/products/pycharm/docs/PyCharm\_ReferenceCard.pdf](https://resources.jetbrains.com/storage/products/pycharm/docs/PyCharm_ReferenceCard.pdf) 53 | 54 | -------------------------------------------------------------------------------- /2.-1/1.5.-keras.md: -------------------------------------------------------------------------------- 1 | # 2.3. 케라스\(Keras\) 2 | 3 | 4 | 케라스\(Keras\)는 파이썬으로 작성된 오픈 소스 신경망 라이브러리입니다. 케라스는 딥러닝 비전문가라도 각자 분야에서 손쉽게 딥러닝 모델을 개발하고 활용할 수 있도록 직관적인 API를 제공하고 있습니다. 케라스는 텐서플로 위에서 동작하는 라이브러리 입니다. 처음 머신러닝, 딥러닝을 시작하고 매우 간단한 것을 제작하거나 빠른 시간 내에 프로토타이핑을 하고자 한다면 Keras가 훨씬 좋은 선택일 수 있습니다. 5 | 6 | 비교적 단순한 신경망을 구성하거나 기존의 갖추어진 기능만을 사용한다면 Keras만으로 충분할 수 있습니다. 하지만 역시 Tensorflow를 사용하는 쪽이 훨씬 더 디테일한 조작이 가능합니다. 따라서 사용 목적에 따라서 어느쪽을 사용할지 선택하는 것이 좋습니다. 7 | 8 | Keras는 빠르게 딥러닝 연구 및 실험을 가능하게 하는 데에 중점을 두고 개발되었습니다. 가능한 개발 시간을 최소화하면서, 빠르게 결과를 도출할 수 있게 합니다. 9 | 10 | Keras 는 다음과 같은 특징이 있습니다. 11 | 12 | 1\) 사용자 친근성\(User Friendliness\) 13 | 14 | Keras는 기계가 아닌 인간을 위해 설계된 API\(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스\)입니다. Keras는 일관성 있고 간단한 API를 제공하고, 일반적으로 필요한 사용자 작업의 수를 최소화하며, 사용자 오류 시 명확하고 실용적인 피드백을 제공합니다. 15 | 16 | 2\) 모듈성\(Modularity\) 17 | 18 | 모델은 가능한 최소한으로의 제한하여 독립적으로 생성가능 합니다. 또한, 신경층\(Neural Layers\), 비용함수\(Cost Functions\), 최적화기\(Optimizers\), 초기화 스킴\(Initialization Schemes\), 활성 함수\(Activation Functions\), 정규화 스킴\(Regularization Schemes\)은 모두 새로운 모델을 생성하기 위해 결합할 수있는 독립 실행형 모듈입니다. 19 | 20 | 3\) 쉬운 확장성\(Easy Extensibility\) 21 | 22 | 새로운 모듈은 \(새로운 클래스와 함수로서\) 추가하기 쉽습니다. 새로운 모듈을 쉽게 만들 수 있기 때문에 Keras가 고급 연구에 적합합니다. 23 | 24 | 4\) Python 작업\(Work with Python\) 25 | 26 | 모델은 작고, 디버그하기 쉽고, 확장성이 용이한 Python을 기반으로 두고 있습니다. 27 | 28 | 그러나 코드에 오류가 발생하였을 경우 케라스 자체 에러일 수도 있고 사용한 백엔드\(텐서플로우 등\) 문제일 수도 있기에 원인 찾기가 쉽지 않습니다. 또한 문서화가 제대로 되어 있지 않습니다. 제공되는 함수 목록은 빨리 업데이트 되는 편이지만 함수에 대한 설명을 찾기가란 쉽지 않습니다. 29 | 30 | 직관성이 떨어지고 진입 장벽이 높은 Tensorflow와는 달리 일반 Python API 형태로 제공하다보니 사용하기가 훨씬 쉽고 사용자 친화적인 환경을 제공하고 있습니다. 향후 Python 표준 딥러닝 API 형태로 자리 잡을 가능성이 있습니다. 31 | 32 | Tensorflow 2.x 에서 상위 수준 API로 포함되었습니다., Tensorflow 위에서 동작하는 라이브러리 텐서플로우-케라스\(tf.keras\)는 텐서플로우 코어 위에서 만들어졌기 때문에, 순수 텐서플로우 기능과 케라스 기능이 쉽게 섞여지고 매칭됩니다. 33 | 34 | -------------------------------------------------------------------------------- /2./2.1./2.1.1./README.md: -------------------------------------------------------------------------------- 1 | # 2.1.1. 아나콘다 설치 \(파이썬 설치\) 2 | 3 | 4 | 아나콘다를 설치하면 numpy, scipy, sklearn 등 많은 라이브러리, 모듈, 유틸리티들이 함께 설치됩니다. 아나콘다를 설치하기 위해서는 먼저 아나콘다를 다운로드 해야 합니다. 5 | 6 | 이제 AVX를 지원하는 64비트 컴퓨터가 준비되었다고 가정하고 아나콘다의 파이썬 3.8 버전 64비트 인스톨러를 다운받습니다. 다음의 주소에서 ‘Python 3.8 version, 64-Bit Graphical Installer’를 다운로드 한 후 설치합니다. 7 | 8 | {% embed url="https://www.anaconda.com/distribution/" %} 9 | 10 | ![](../../../.gitbook/assets/image%20%2811%29.png) 11 | 12 | 13 | 14 | 아나콘다 설치 위치는 “C:\Users\<사용자 계정>Anaconda3” 로 해야 합니다. 이렇게 하지 않으면 파이참에서 아나콘다의 위치를 찾지 못하는 경우가 생기기 때문입니다. 15 | 16 | ![](../../../.gitbook/assets/image%20%284%29.png) 17 | 18 | ![](../../../.gitbook/assets/2113.png) 19 | 20 | ![](../../../.gitbook/assets/2114.png) 21 | 22 | ![](../../../.gitbook/assets/2115.png) 23 | 24 | ![](../../../.gitbook/assets/2116.png) 25 | 26 | 27 | 28 | ![](../../../.gitbook/assets/2117.png) 29 | 30 | 설치가 완료되면 Anaconda Prompt에서 명령행 인터페이스를 사용해서 진행하면 됩니다. 31 | 32 | 아나콘다 프로그램 폴더중에서 Anaconda Prompt를 선택하여 실행합니다. 33 | 34 | ![](../../../.gitbook/assets/2119.png) 35 | 36 | 아나콘다가 설치되면 제일 먼저 설치된 파이썬의 버전을 확인해 봅니다. 37 | 38 | Anaconda Prompt를 선택하여 실행한 후 “conda search python”을 입력해 봅니다. 기본적으로 Python 2.7.13부터 최신버전인 3.9.0까지 설치되어 있습니다. 39 | 40 | ```text 41 | (base)C:\Users\사용자계정명>conda search python 42 | ``` 43 | 44 | ![](../../../.gitbook/assets/21110%20%281%29.png) 45 | 46 | 현재 \(base\) 환경에서 사용중인 파이썬 버전을 확인하려면 다음 명령을 실행합니다. 47 | 48 | ```text 49 | (base) C:\Users\사용자계정>python --version 50 | ``` 51 | 52 | PIP는 Python Package Index \(PyPI\) 저장소로부터 패키지를 다운받아 설치 및 관리해주는 패키지 매니저 입니다. pip install \[패키지 이름\]의 형태로 패키지를 설치하면 됩니다. 53 | 54 | Pip를 최신 버전으로 업그레이드 하려면 다음 명령을 실행합니다. 55 | 56 | ```text 57 | (base) C:\Users\사용자계정>python –m pip install –-upgrade pip 58 | ``` 59 | 60 | ![](../../../.gitbook/assets/21111%20%281%29.png) 61 | 62 | -------------------------------------------------------------------------------- /2./2.1./2.1.5./1.md: -------------------------------------------------------------------------------- 1 | # 1\) 파이참 가상환경 설정 2 | 3 | 파이참 실행이 완료되면 파이참을 실행합니다. 최초 실행시 설정 값을 어떻게 설정할 것인지 묻는 화면이 나타납니다. 최초 설치이기 때문에 Do not import settings 로 설정합니다. 4 | 5 | ![](../../../.gitbook/assets/21510.png) 6 | 7 | 파이참의 UI theme는 검은 Darcula 혹은 Light 중에 원하는 것으로 선택합니다. 8 | 9 | Featured plugins 는 필요한 시점에서 다시 설치할 수 있으니 그냥 넘어 갑니다. 10 | 11 | PyCharm 웰컴 창에서 Create New Project를 선택하거나 PyCharm 프로젝트가 열린 상태라면 메뉴에서 File > New Project를 선택합니다. 12 | 13 | ![](../../../.gitbook/assets/21511.png) 14 | 15 | 이제 몇 가지 중요한 작업을 해야 합니다. 16 | 17 | 첫 번째는 생성되는 파이썬 프로젝트들의 Location 을 설정 하는 작업입니다. 다음과 같이 입력합니다. 18 | 19 | ```text 20 | C:\Users\사용자 계정\PycharmProjects\OneBook 21 | ``` 22 | 23 | ![](../../../.gitbook/assets/21512.png) 24 | 25 | 그 다음에는 Project Interpreter를 설정 해야 합니다. 26 | 27 | 그 이유는 앞에서도 설명 했듯이 파이참은 프로젝트별로 파이썬, 그리고 다른 라이브러리들을 프로젝트별로 다르게 선택 할 수 있습니다. 프로젝트 단위로 Virtualenv\(가상환경\)을 별도로 만들어서 관리하기 때문입니다. 28 | 29 | 초기 Project Interpreter는 New Virtualenv environment 로 되어 있습니다. 위의 그림 2번인 Project Interpreter를 마우스로 선택하면 다음과 같은 화면이 나타납니다. 30 | 31 | ![](../../../.gitbook/assets/21513.png) 32 | 33 | 이 화면에서 Existing interpreter 를 선택하고 오른쪽 끝의 \[…\] 를 누르면 Interpreter를 선택하는 화면이 다시 나타납니난다 34 | 35 | ![](../../../.gitbook/assets/21514.png) 36 | 37 | 다시 우측의 \[…\]를 눌러서 아나콘다 설치시에 설정했던 가상환경의 파이썬을 선택해 줍니다. 38 | 39 | 아나콘다 설치시 설정한 가상환경의 위치가 40 | 41 | C:\Users\\[사용자계정\]\Anaconda3\envs\onebook 이므로 해당 폴더내에 있는 python.exe.를 선택해야 합니다. 42 | 43 | ![](../../../.gitbook/assets/21515.png) 44 | 45 | Interpreter 선택이 제대로 되었는지 확인하고 Ok 버튼을 누릅니다. 46 | 47 | ![](../../../.gitbook/assets/21516.png) 48 | 49 | ‘Make available to all projects’를 체크하고 Ok 버튼을 누릅니다. 50 | 51 | ![](../../../.gitbook/assets/21517.png) 52 | 53 | 프로젝트 소스가 저장되는 위치, 그리고 사용할 가상환경과 인터프리터 선택이 올바르게 되었는지 다시한번 확인하고 ‘Create’버튼을 누릅니다. 다음과 같이 파이참이 실행되는 것을 확인 합니다. 54 | 55 | ![](../../../.gitbook/assets/21518.png) 56 | 57 | -------------------------------------------------------------------------------- /2.-1/1./1.1.1.-cpu-gpu.md: -------------------------------------------------------------------------------- 1 | # 2.1.1. CPU와 GPU의 차이 2 | 3 | 4 | GPU \(Graphics Processing Unit\), CPU \(Central Processing Unit\) 5 | 6 | CPU는 컴퓨터의 두뇌를 담당합니다. 다양한 환경에서의 작업을 빠르게 수행하기 위해 ALU의 구조가 복잡하고 명령어 하나로 처리할 수 있는 기능도 많으며 각종 제어 처리를 위한 부분이 많습니다. 반면 GPU는 특화된 연산을 빠른 속도로 처리하기 위해 단순한 ALU를 여러개 갖고 있는 구조로 이루어져 있습니졌다. 이 때문에 GPU 단독으로는 아무것도 처리할 수 없으며 GPU를 제어하는 것은 여전히 CPU의 역할입니다. 7 | 8 | CPU는 입출력장치, 기억장치, 연산장치를 비롯한 컴퓨터 리소스를 이용하는 최상위 계층 장치인 '중앙처리장치'로써, 컴퓨터의 두뇌와 같은 역할을 담당합니다. 따라서 데이터 처리와 더불어 프로그램에서 분석한 알고리즘에 따라 다음 행동을 결정하고 멀티태스킹을 위해 나눈 작업들에 우선순위를 지정하고 전환하며 가상 메모리를 관리하는 등 컴퓨터를 지휘하는 역할을 수행합니다. 컴퓨터 프로그램의 대부분은 복잡한 순서를 가진 알고리즘을 가지고 작동하므로 CPU가 적합하다. 9 | 10 | GPU는 비디오, 즉 픽셀로 이루어진 영상을 처리하는 용도로 탄생했습니다. 이때문에 CPU에 비해 반복적이고 비슷한, 대량의 연산을 수행하며 이를 병렬적으로\(Parallel\) 나누어 작업하기 때문에 CPU에 비해 속도가 대단히 빠릅니다. 영상, 렌더링을 비롯한 그래픽 작업의 경우 픽셀 하나하나에 대해 연산을 하기 때문에 연산능력이 비교적 떨어지는 CPU가 GPU로 데이터를 보내 재빠르게 처리합니다. 11 | 12 | CPU와 GPU의 차이는 그 작업 처리 방식을 비교해보면 쉽게 알 수 있습니다. 하나의 CPU는 직렬 처리에 최적화된 몇 개의 코어로 구성된 반면, GPU는 병렬 처리용으로 설계된 수 천 개의 보다 소형이고 효율적인 코어로 구성되었습니다. 13 | 14 | CPU 는 GPU 보다 더 적은 코어를 갖고 있지만 각각의 코어가 GPU 보다 더 강력한 컴퓨팅 파워를 갖고 있습니다. 따라서 CPU 는 **순차적인 작업 \(Sequential task\)** 에 더 강점이 있습니다다. 반면 GPU 는 CPU 보다 코어수는 많지만 각각의 코어가 GPU 보다 더 성능이 낮기 때문에 **병렬적인 작업 \(Paralell task\)** 에 더 강점이 습니있다. 15 | 16 | 현재 PC 에서 사용되는 CPU 의 코어는 보통 4~10개 정도이며 hyperthreading 기술을 통해 thread 를 2배 정도 늘릴 수 있습니다. 예를 들어 8 코어 16 threads CPU 의 경우, 병렬적으로 16개의 task 를 수행할 수 있다는 뜻입니다. 반면, 예를 들어 NVIDIA 의 Tital XP GPU 의 경우 3840 코어를 갖고 있습다. 또 최근 출시된 2080 TI 의 경우 4,352 개의 코어를 갖고 있다습. threading 을 감안하더라도 CPU와 GPU 의 코어 수의 차이는 200 배 이상이 됩니. 17 | 18 | 19 | ![https://kr.nvidia.com/object/what-is-gpu-computing-kr.html](../../.gitbook/assets/cpu-and-gpu.jpg) 20 | 21 | GPU는 병렬 처리를 효율적으로 처리하기 위한 수천 개의 코어를 가지고 있습니다. 어플리케이션의 연산집약적인 부분을 GPU로 넘기고 나머지 코드만을 CPU에서 처리하는 GPU 가속 컴퓨팅은 특히 딥러닝, 머신러닝 영역에서 강력한 성능을 제공합니다. 사용자 입장에서는 연산 속도가 놀라울 정도로 빨라졌음을 느낄 수 있습니다. 22 | 23 | -------------------------------------------------------------------------------- /3./3.5./3.5.2..md: -------------------------------------------------------------------------------- 1 | # 3.5.2. 반복문 2 | 3 | 일반적으로 명령문은 순차적으로 실행됩니다. 함수의 첫 번째 명령문이 먼저 실행되고 두 번째 명령문이 계속 실행됩니다. 여러 개의 코드 블록을 여러 번 실행해야 하는 상황이 있을 수 있습니다. 프로그래밍 언어는 보다 복잡한 실행 경로를 허용하는 다양한 제어 구조를 제공합니다. 4 | 5 | 반복문을 사용하면 명령문이나 명령문 그룹을 여러 번 실행할 수 있습니다. 파이썬 반복문은 두가지가 존재합니다. 6 | 7 | 1. while loops 8 | 9 | 2. for loops 10 | 11 | **1\) while 반복문** 12 | 13 | while 조건: 14 | 조건이 참인 동안 반복 실행할 명령들.... 15 | 16 | break : 반복문을 탈출 합니다. 17 | continue : 반복문의 처음으로 간다. 18 | 19 | **2\) for 반복문** 20 | 21 | for 변수명 in Collection Data: 22 | in 뒤의 Collection Data 값이 없을 때까지 하나씩 변수로 복사되어 반복 23 | 24 | 반복 실행할 명령 25 | .... 26 | else: 27 | 데이터가 없을때 실행할 명령 28 | .... 29 | 30 | 파이참을 사용하여 조건문, 반복문을 테스트 해 봅니다. 31 | 32 | 파이참을 실행하고 New > Python File 을 선택하여 새로운 파이썬 파일을 만듭니다. 33 | 34 | ![](../../.gitbook/assets/3520.png) 35 | 36 | 파일 이름은 WhileTest로 지정합니다. 37 | 38 | ![](../../.gitbook/assets/3521.png) 39 | 40 | 다음의 코드를 입력합니다. 41 | 42 | ```text 43 | import random # 난수를 만드는 random 모듈을 사용합니다. 44 | correct_answer = random.randint(1, 20) # 1에서 20사이의 난수를 만듭니다. 45 | 46 | count = 0 # 숫자형 변수 count를 만들고 0으로 초기화 합니다. 47 | 48 | while True : # while 반복문 조건이 무조건 True이므로 무한으로 반복 49 | number = int(input("숫자를 입력하세요: ")) 50 | count += 1 51 | if correct_answer == number : # 난수와 일치하면 while문을 빠져 나옵니다 52 | break 53 | elif correct_answer > number : 54 | print(number, "보다 큽니다!") 55 | else : 56 | print(number, "보다 작습니다!") 57 | 58 | # while 반복문을 빠져 나왔으니 결과를 출력 합니다. 59 | print("정답입니다!") 60 | print(count, "번 만에 정답을 맞추셨군요~~~") 61 | ``` 62 | 63 | ![](../../.gitbook/assets/3523.png) 64 | 65 | 상단 메뉴 Run > Run WhileTest 를 선택하여 실행해 봅니다. 66 | 67 | ![](../../.gitbook/assets/3524.png) 68 | 69 | 하단 윈도우에서 결과를 확인 합니다. 70 | 71 | ![](../../.gitbook/assets/3525.png) 72 | 73 | -------------------------------------------------------------------------------- /1./1.4.-tensorflow.md: -------------------------------------------------------------------------------- 1 | # 1.4. 텐서플로\(Tensorflow\) 2 | 3 | 4 | 텐서플로우\[TensorFlow\]는 구글에서 개발했으며 2015년 오픈 소스로 공개됐습니다. 2세대 머신러닝 시스템으로도 불리는 텐서플로우는 파이썬\[Python\] 기반 라이브러리로 여러 CPU 및 GPU와 모든 플랫폼, 데스크톱 및 모바일에서 사용할 수 있습니다. 5 | 6 | 텐서플로\(TensorFlow\)는 안드로이드와 iOS같은 모바일 환경은 물론 64비트 리눅스, MacOS 의 데스크탑이나 서버 시스템의 여러 개의 CPU와 GPU에서 구동될 수 있습니다. 텐서플로 연산은 상태를 가지는 데이터 흐름\(stateful dataflow\) 그래프로 표현됩니다. 또한 C++ 과 R 과 같은 다른 언어도 지원하며 딥러닝 모델을 직접 작성하거나 케라스\(keras\)와 같은 래퍼 라이브러리를 사용하여 직접 작성할 수 있습니다. 지금 텐서플로는 독자적인 생태계를 갖출 정도로 발전했습니다. 텐서플로 전문 블로거도 나오고, 텐서플로를 테마로 한 사용자 커뮤티들도 생겨났습니다. 따라서 학습 자원도 많고 튜토리얼도 풍부합니다. 텐서플로 사이트\(https://www.tensorflow.org/\)에만 들어가도 충분한 정보를 얻을 수 있습니다. 7 | 8 | 텐서플로우는 여러 머신러닝 프레임워크와 경쟁합니다. 파이토치\(PyTorch\), CNTK, MXNet은 텐서플로우와 상당 부분 용도가 비슷한 주요 경쟁 프레임워크입니다. 그러나 텐서플로는 다양한 커뮤니티를 지원하고 있어 다른 딥러닝 프레임워크보다 인기가 있습니다. 커뮤니티가 활성화되어 있으면 실무에 적용했을 때 생기는 문제점들을 해결하거나, 라이브러리 자체에 버그가 있을 때 얼마나 빠르게 수정되는가 하는 그런 요인들이 실무를 하는 엔지니어에게는 가장 중요한 부분이라고 할 수 있을 것입니다. 그런 점에 있어 현존하는 머신러닝 라이브러리 중 커뮤니티가 가장 북적이는 것이 바로 텐서플로 입니다. 깃허브의 텐서플로 저장소나 각종 애플리케이션, 클라우드 서비스 등은 물론, 새로운 논문이 나올 때마다 텐서플로로 구현된 버전이 가장 먼저 나올 정도로 텐서플로 커뮤니티는 놀라울 만큼 활발하게 움직이고 있습니다. 9 | 10 | 텐서플로우는 크게 2가지 유형의 버전으로 제공됩니다. 11 | 12 | **CPU만을** **지원하는** **버전** 13 | 14 | 만약 NVIDIA의 GPU를 사용하고 있지 않을 경우 반드시 CPU만 지원하는 버전으로 설치하셔야 합니다. GPU를 지원하는 텐서플로우 보다 설치하기 쉽다는 장점이 있어, 처음 텐서플로우를 설치하는 경우 CPU만 지원되는 버전을 추천합니다. 15 | 16 | **GPU를** **함께** **지원하는** **버전** 17 | 18 | NVIDIA GPU를 지원하는 버전의 경우 CPU에서 실행되는 버전보다 월등히 빠른 성능을 나타낸다. 따라서, 텐서플로우를 실행하기 위한 사양의 NVIDIA GPU를 갖고 계신 경우 GPU를 지원하는 버전으로 설치해야 보다 빠르게 처리 할 수 있습니다. CPU만 지원하는 텐서플로우 버전보다 성능차이가 크기 때문에 궁극적으로는 GPU를 지원하는 버전으로 사용하는 것이 좋습니다. 19 | 20 | NVIDIA GPU에서 지원되는 Compute capability는 아래의 페이지에서 확인 하실 수 있습니다. 21 | 22 | [https://developer.nvidia.com/cuda-gpus](https://developer.nvidia.com/cuda-gpus) 23 | 24 | Tensorflow는 구글에서 상업적 지원은 하지 않고 있으며, 앞으로도 계획은 없다고 합니다. 그리고 사전 학습 모델이 많지 않다는 단점이 있으며, 다른 딥러닝 프레임워크보다 늦게 개발되었기 때문에 아직 다양한 플랫폼에서의 최적화가 부족한 경우가 있습니다. 25 | 26 | -------------------------------------------------------------------------------- /2./2.1./2.1.4.-jupyter-notebook.md: -------------------------------------------------------------------------------- 1 | # 2.1.4. Jupyter Notebook 설치 2 | 3 | 주피터 노트북이란 파이썬의 개발 지원 툴로 사용방법이 간편하며 시각화에 강해 데이터 분석에 주로 사용됩니다. 4 | 5 | Jupyter notebook은 대화형 파이썬 인터프리터\(Interpreter\)로써 웹 브라우저 환경에서 파이썬 코드를 작성 및 실행할 수 있는 툴입니다. 서버에 설치하여 포트를 개방한 후 해당 url에 접속하여 원격으로 사용도 가능합니다. 로컬 환경에서 브라우저를 띄워 대화형 환경에서 코드 작성 및 실행 가능합니다. 6 | 7 | 설치는 두 가지 방법이 있는데, 첫 번째는 Anaconda와 함께 설치하는 방법이 있습다. Anaconda를 설치할 때 Jupyter Notebook도 같이 설치하면 됩니다. 8 | 9 | Anadonda를 설치하는 방법 외에 기본적으로 pip은 Jupyter 패키지 설치를 지원합니다. 설치 방법은 다른 패키지 설치 방법과 똑같습다. 10 | 11 | ```text 12 | pip install jupyter 13 | ``` 14 | 15 | 실행하는 방법은 16 | 17 | ```text 18 | jupyter notebook 19 | ``` 20 | 21 | 위 명령을 입력하면 자동으로 어떤 html 파일을 열면서 브라우저가 실행됩니다. 만약 실행되지 않는다면 [http://localhost:8888](http://localhost:8888) 으로 접속하거나 위 그림의 맨 마지막 줄에 있는 url을 복사하여 브라우저에서 접속합니다. 22 | 23 | Jupyter notebook에 가상환경 kernel을 추가하려면 다음 명령을 실행 합니다. 24 | 25 | ```text 26 | conda activate 가상환경명 27 | python -m ipykernel install --user --name 가상환경명 --display-name “가상환경명“ 28 | conda install nb_conda 29 | jupyter notebook 30 | ``` 31 | 32 | Jupyter Notebook의 시작 폴더를 변경하기 위해 다음 명령을 입력합니다. 33 | 34 | ```text 35 | jupyter notebook --generate-config 36 | ``` 37 | 38 | 그러면 Jupyter가 실행되는 •사용자 폴더에 보면 .jupyter 폴더가 생성 되었습니다. \(사용자 폴더 :\Users\사용자이름 또는 바탕화면 사용자 폴더\) 39 | 40 | Linux에서는 기본적으로 `/home//.jupyter/jupyter_notebook_config.py` 파일로 생성되며, 윈도우에서는 `C:\Users\\.jupyter\jupyter_notebook_config.py`로 생성된다. 41 | 42 | 설정 파일에서 필요한 옵션을 변경하여 사용하면 됩다. 43 | 44 | 폴더 안에 jupyter\_notebook\_config.py 파일을 열어 \#c.NotebookApp.notebook\_dir 이 부분을 찾습니다. 주석을 제거하고 c.NotebookApp.notebook\_dir = ‘C:\작업폴더’ 로 수정하고 저장합니다. 45 | 46 | 윈도우 시작 메뉴에서 Jupyter notebook\(koreaAI\) 아이콘을 마우스 오른쪽 메뉴를 이용해 파일 위치 열기를 합니다. 그 다음 Jupyter notebook\(koreaAI\) 아이콘을 마우스 오른쪽 메뉴에서 속성을 선택합니다. 주피터 노트북 속성 창에서 대상 입력란에 있는 %USERPROFILE%을 삭제합니다. 그리고 시작 위치 란은 공란으로 하고 확인을 누릅니다. 47 | 48 | ![](../../.gitbook/assets/2140.png) 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /5./6.1./6.1.2..md: -------------------------------------------------------------------------------- 1 | # 6.1.2. 단어 임베딩 2 | 3 | 이글은 다음 싸이트를 참조하여 작성되었습니다. 4 | 5 | **참고** **:** 6 | 7 | * [http://blog.theeluwin.kr/post/146591096133/%ED%95%9C%EA%B5%AD%EC%96%B4-word2vec](http://blog.theeluwin.kr/post/146591096133/%ED%95%9C%EA%B5%AD%EC%96%B4-word2vec) 8 | * [https://dreamgonfly.github.io/machine/learning,/natural/language/processing/2017/08/16/word2vec\_explained.html](https://dreamgonfly.github.io/machine/learning,/natural/language/processing/2017/08/16/word2vec_explained.html) 9 | 10 | NLP\(Natural Language Processing, 자연어 처리\)는 ‘컴퓨터가 인간이 사용하는 언어를 이해하고, 분석할 수 있게 하는 분야’ 를 총칭하는 말입니다. 그러나 얼핏 생각했을 때 컴퓨터가 이를 이해할 수 있도록 언어를 변환하는 것은 참 어려운 일일 것입니다. 컴퓨터에게 ‘사과’와 ‘초콜릿’ 이라는 두 단어를 보여준다고 컴퓨터가 두 단어의 개념적인 차이를 이해할 수 있을까요? 컴퓨터는 단순히 두 단어를 유니코드의 집합으로만 생각할 것입니다. 11 | 12 | 2013년 구글에서 개발한 Word2Vec이라는 방법론이 있습니다. 이름 그대로 단어\(Word\)를 벡터\(Vector\)로 바꿔주는 방법입니다. word2vec은 CBOW 방식과 Skip-Gram 방식의 단어 임베딩을 구현한 C++ 라이브러리로 구글에 있던 Mikolov 등이 개발하였습니다. 파이썬에서는 gensim이라는 패키지에 Word2Vec이라는 클래스로 구현되어 있습니다. 13 | 14 | Word2Vec은 간단하게 말해서 단어들을 고정된 차원의 벡터스페이스에 유의미하게 배치해주는 단어 임베딩\(word embedding\) 알고리즘 중 하나입니다. 15 | 16 | 단어를 벡터로 바꿀 때, 좀 더 똑똑하게 바꿔서 벡터에 단어의 의미를 담을 수 있다면 어떨까? 비슷한 의미의 단어들은 비슷한 벡터로 표현이 된다면? 더 나아가 단어와 단어 간의 관계가 벡터를 통해서 드러날 수 있다면? 예를 들면 ‘왕’과 ‘여왕’의 관계가 ‘남자’와 ‘여자’의 관계라는 것을 벡터를 통해 알아낼 수 있다면, 유용하게 쓸 수 있을 것입니다. 17 | 18 | 이렇게 단어를 벡터로 바꾸는 모델을 단어 임베딩 모델\(word embedding model\)이라고 부릅니다. word2vec은 단어 임베딩 모델들 중 대표적인 모델입니다. 19 | 20 | word2vec의 핵심적인 아이디어는 “친구를 보면 그 사람을 안다” 또는 “단어의 주변을 보면 그 단어를 안다” 입니다. 21 | 22 | 잠시 퀴즈를 하나 풀어보자. 다음 빈칸에 들어갈 수 있는 단어는 무엇이 있을까요? 23 | 24 | ![](../../.gitbook/assets/61201.png) 25 | 26 | italian, mexican 등의 단어를 떠올릴 수 있습니다. 하지만 chair, parking 이런 말들은 들어가기 어려울 것입니다. 27 | 28 | ![](../../.gitbook/assets/61202.png) 29 | 30 | 단어의 주위만 보았는데도 어떤 단어가 적합하고 어떤 단어가 부적합한지가 어느정도 드러납니다. 이 빈칸에 들어갈 수 있는 단어들은 서로 비슷한 맥락을 갖는 단어들, 즉 서로 비슷한 단어들입니다. 단어의 주변을 보면 그 단어를 알 수 있기 때문에, 단어의 주변이 비슷하면 비슷한 단어라는 말이 됩니다. 31 | 32 | 이렇게 유사어를 찾아주는 것이 Word2Vec 의 기능입니다. 33 | 34 | -------------------------------------------------------------------------------- /2.-1/1.4.-tensorflow.md: -------------------------------------------------------------------------------- 1 | # 2.2. 텐서플로\(Tensorflow\) 2 | 3 | 4 | 텐서플로우\[TensorFlow\]는 구글에서 개발했으며 2015년 오픈 소스로 공개됐습니다. 2세대 머신러닝 시스템으로도 불리는 텐서플로우는 파이썬\[Python\] 기반 라이브러리로 여러 CPU 및 GPU와 모든 플랫폼, 데스크톱 및 모바일에서 사용할 수 있습니다. 5 | 6 | 텐서플로\(TensorFlow\)는 안드로이드와 iOS같은 모바일 환경은 물론 64비트 리눅스, MacOS 의 데스크탑이나 서버 시스템의 여러 개의 CPU와 GPU에서 구동될 수 있습니다. 텐서플로 연산은 상태를 가지는 데이터 흐름\(stateful dataflow\) 그래프로 표현됩니다. 또한 C++ 과 R 과 같은 다른 언어도 지원하며 딥러닝 모델을 직접 작성하거나 케라스\(keras\)와 같은 래퍼 라이브러리를 사용하여 직접 작성할 수 있습니다. 지금 텐서플로는 독자적인 생태계를 갖출 정도로 발전했습니다. 텐서플로 전문 블로거도 나오고, 텐서플로를 테마로 한 사용자 커뮤티들도 생겨났습니다. 따라서 학습 자원도 많고 튜토리얼도 풍부합니다. 텐서플로 사이트\(https://www.tensorflow.org/\)에만 들어가도 충분한 정보를 얻을 수 있습니다. 7 | 8 | Tensor = Multidimensional Arrays = Data 딥러닝에서 텐서는 데이터를 의미합니다. 다차원 배열로 나타내는 데이터입니다. 플로는 데이터의 흐름을 의미합니다. 텐서플로우에서 계산은 데이터 플로우 그래프\(dataflow graph\)로 행해집니다. 9 | 10 | 텐서플로우는 여러 머신러닝 프레임워크와 경쟁합니다. 파이토치\(PyTorch\), CNTK, MXNet은 텐서플로우와 상당 부분 용도가 비슷한 주요 경쟁 프레임워크입니다. 그러나 텐서플로는 다양한 커뮤니티를 지원하고 있어 다른 딥러닝 프레임워크보다 인기가 있습니다. 커뮤니티가 활성화되어 있으면 실무에 적용했을 때 생기는 문제점들을 해결하거나, 라이브러리 자체에 버그가 있을 때 얼마나 빠르게 수정되는가 하는 그런 요인들이 실무를 하는 엔지니어에게는 가장 중요한 부분이라고 할 수 있을 것입니다. 그런 점에 있어 현존하는 머신러닝 라이브러리 중 커뮤니티가 가장 북적이는 것이 바로 텐서플로 입니다. 깃허브의 텐서플로 저장소나 각종 애플리케이션, 클라우드 서비스 등은 물론, 새로운 논문이 나올 때마다 텐서플로로 구현된 버전이 가장 먼저 나올 정도로 텐서플로 커뮤니티는 놀라울 만큼 활발하게 움직이고 있습니다. 11 | 12 | 텐서플로우는 크게 2가지 유형의 버전으로 제공됩니다. 13 | 14 | **CPU만을** **지원하는** **버전** 15 | 16 | 만약 NVIDIA의 GPU를 사용하고 있지 않을 경우 반드시 CPU만 지원하는 버전으로 설치하셔야 합니다. GPU를 지원하는 텐서플로우 보다 설치하기 쉽다는 장점이 있어, 처음 텐서플로우를 설치하는 경우 CPU만 지원되는 버전을 추천합니다. 17 | 18 | **GPU를** **함께** **지원하는** **버전** 19 | 20 | NVIDIA GPU를 지원하는 버전의 경우 CPU에서 실행되는 버전보다 월등히 빠른 성능을 나타낸다. 따라서, 텐서플로우를 실행하기 위한 사양의 NVIDIA GPU를 갖고 계신 경우 GPU를 지원하는 버전으로 설치해야 보다 빠르게 처리 할 수 있습니다. CPU만 지원하는 텐서플로우 버전보다 성능차이가 크기 때문에 궁극적으로는 GPU를 지원하는 버전으로 사용하는 것이 좋습니다. 21 | 22 | NVIDIA GPU에서 지원되는 Compute capability는 아래의 페이지에서 확인 하실 수 있습니다. 23 | 24 | [https://developer.nvidia.com/cuda-gpus](https://developer.nvidia.com/cuda-gpus) 25 | 26 | Tensorflow는 구글에서 상업적 지원은 하지 않고 있으며, 앞으로도 계획은 없다고 합니다. 그리고 사전 학습 모델이 많지 않다는 단점이 있으며, 다른 딥러닝 프레임워크보다 늦게 개발되었기 때문에 아직 다양한 플랫폼에서의 최적화가 부족한 경우가 있습니다. 27 | 28 | 2019년 10월에 Tensorflow 2.0 발표되었습니다. 업데이트 스크립트로 1.x 에서 2.x 로 Conversion 가능합니다. 29 | 30 | -------------------------------------------------------------------------------- /3./3.3./3.3.1..md: -------------------------------------------------------------------------------- 1 | # 3.3.1. 대화형과 스크립트 모드 프로그래밍 2 | 3 | 파이참 개발 환경을 사용하지 않고 파이썬을 실행 하기 위해서는 아나콘다 프롬프트에서 4 | 5 | >python 6 | 7 | 을 실행 하면 됩니다. 8 | 9 | ![](../../.gitbook/assets/3311.png) 10 | 11 | 파이썬을 호출할 때 사용할 옵션들을 확인 하는 방법은 아나콘다 프롬프트에서 python -h 를 실행하는 것입니다. 12 | 13 | ```text 14 | (onebook) C:\Users\Nainsys>python -h 15 | usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... 16 | Options and arguments (and corresponding environment variables): 17 | -b : issue warnings about str(bytes_instance), str(bytearray_instance) 18 | and comparing bytes/bytearray with str. (-bb: issue errors) 19 | … 20 | file : program read from script file 21 | - : program read from stdin (default; interactive mode if a tty) 22 | arg ...: arguments passed to program in sys.argv[1:] 23 | [ etc. ] 24 | ``` 25 | 26 | 커맨드 라인 인자 \(Command Line Arguments\)는 진보된 주제이므로 일단 파이썬 개념을 완전히 이해하면 좀 더 공부해야 합니다. 중요한 몇 개만 소개합니다. 27 | 28 | * **-c:** command 로 호출되면, command로 주어지는 파이썬 문장을 실행합니다. 여기서 command는 개행 문자로 구분된 여러 개의 문장을 포함할 수 있습니다. 29 | * **-m:** module-name 으로 호출되면, 주어진 모듈을 파이썬 모듈 경로에서 찾은 후에 스크립트로 실행합니다. 30 | * **script file**: 지정한 스크립트 파일에 저장된 파이썬 코드를 실행합니다. script는 파이썬 파일이나 \_\_main\_\_.py 파일이 들어있는 디렉터리나 \_\_main\_\_.py 파일을 포함하는 zip 파일을 가리키는 파일 시스템 경로\(절대나 상대\)여야 합니다. 31 | * **--help**: 모든 명령 줄 옵션에 대한 간단한 설명을 인쇄합니다. 32 | * **--version**: 파이썬 버전 번호를 출력하고 종료합니다. 33 | 34 | Anaconda Prompt 를 실행하고 스크립트 파일 옵션을 전달하지 않고 Python 인터프리터를 실행하면 다음 >>> 프롬프트가 표시됩니다. >>> 표시가 나타나면 print\(“Hello, Python”\) 을 입력하고 엔터를 누릅니다. 35 | 36 | ![](../../.gitbook/assets/3312.png) 37 | 38 | Hello, Python이 출력되는 것을 확인 할 수 있습니다. 이런 형태의 프로그래밍 방법이 대화형 모드 프로그래밍입니다. 39 | 40 | 윈도우 메모장을 실행하여 print\(“Hello, Python”\) 을 입력하고 C:\Users\\[사용자 계정\]에 test.py 이름으로 저장합니다. 41 | 42 | ![](../../.gitbook/assets/3313.png) 43 | 44 | 다시 Anaconda Prompt 를 실행하고 python test.py 와 같이 스크립트 파일명을 옵션으로 주고 실행하면 다음과 같이 결과를 바로 출력합니다. 45 | 46 | ![](../../.gitbook/assets/3314.png) 47 | 48 | 이런 형태의 프로그래밍 방법이 스크립트 모드 프로그래밍입니다. 49 | 50 | 만약에 리눅스 환경이라면 다음과 같이 처리할 수도 있습니다. 51 | 52 | 메모장과 동일하게 nano 에디터를 사용하여 nano tesy.py 를 실행하여 print\(“Hello, Python”\) 을 입력합니다. 53 | 54 | ![](../../.gitbook/assets/3315.png) 55 | 56 | python test.py 와 같이 스크립트 파일명을 옵션으로 주고 실행하면 동일하게 결과를 출력합니다. 57 | 58 | -------------------------------------------------------------------------------- /1./1.2-python.md: -------------------------------------------------------------------------------- 1 | # 1.2. 파이썬\(Python\) 2 | 3 | 4 | 파이썬\(영어: Python\)은 1991년 프로그래머인 귀도 반 로섬\(Guido van Rossum\)이 발표한 고급 프로그래밍 언어로, 플랫폼 독립적이며 인터프리터식, 객체지향적, 동적 타이핑\(dynamically typed\) 대화형 언어입니다. 파이썬이라는 이름은 귀도가 좋아하는 코미디 〈Monty Python's Flying Circus〉에서 따온 것입니다. 5 | 6 | 파이썬의 사전적인 의미는 고대 신화에 나오는 파르나소스 산의 동굴에 살던 큰 뱀을 뜻하며, 아폴로 신이 델파이에서 파이썬을 퇴치했다는 이야기가 전해지고 있습니다. 대부분의 파이썬 책 표지와 아이콘이 뱀 모양으로 그려져 있는 이유가 여기에 있습니다. 7 | 8 | ![](../.gitbook/assets/121.png) 9 | 10 | 파이썬은 비영리의 파이썬 소프트웨어 재단이 관리하는 개방형, 공동체 기반 개발 모델을 가지고 있습니다. C언어로 구현된 C파이썬 구현이 사실상의 표준입니다. 11 | 12 | 파이썬은 초보자부터 전문가까지 사용자층을 보유하고 있습니다. 동적 타이핑\(dynamic typing\)이 가능한 범용 프로그래밍 언어로, 펄 및 루비와 자주 비교됩니다. 다양한 플랫폼에서 쓸 수 있고, 라이브러리\(모듈\)가 풍부하여, 대학을 비롯한 여러 교육 기관, 연구 기관 및 산업계에서 이용이 증가하고 있습니다. 또 파이썬은 순수한 프로그램 언어로서의 기능 외에도 다른 언어로 쓰인 모듈들을 연결하는 접착 언어\(glue language\)로써 자주 이용됩니다. 실제 파이썬은 Paint Shop Pro, 오토데스크 마야, TORRENT, 카카오톡 등과 같은 많은 상용 응용 프로그램에서 스크립트 언어로 채용되고 있습니다. 도움말 문서도 정리가 잘 되어 있으며, 유니코드 문자열을 지원해서 다양한 언어의 문자 처리에도 능합니다. 13 | 14 | 파이썬은 기본적으로 인터프리터 위에서 실행될 것을 염두에 두고 설계되었습니다. 파이썬은 컴파일러 언어가 아닌 인터프리터 언어이기 때문에 한줄 한줄 라인별로 프로그램을 실행 시키며 결과를 확인 할 수 있습니다. 15 | 16 | C, JAVA, Python 등과 같은 고급언어로 쓰여진 프로그램이 컴퓨터에서 수행되기 위해서는 컴퓨터가 직접 이해할 수 있는 언어로 바꾸어 주어야 합니다. 이러한 일을 컴파일이라고 합니다. 17 | 18 | 컴파일 언어와 인터프린터 언어의 가장 큰 차이점은 컴파일 시점 입니다. 컴파일러는 프로그램 전부를 실행 전에 한꺼번에 기계어로 번역합니다. 기계어로 번역된 실행 파일\(.exe\)이 존재합니다. 인터프리터는 한줄씩 기계어로 번역과 실행이 동시에 이루어진다. 즉, 별도의 실행파일이 존재하지 않습니는다. 19 | 20 | 파이썬은 데이터 과학 분야를 위한 표준 프로그래밍 언어가 되어 가고 있습니다. 파이썬은 범용 프로그래밍 언어의 장점은 물론 MATLAB과 R 같은 특정 분야를 위한 스크립팅 언어의 편리함을 함께 갖추고 있습니다. 또한 파이썬은 데이터 적재, 시각화, 통계, 자연어 처리, 이미지 처리 등에 필요한 라이브러리들을 가지고 있습니다. 이러한 많은 도구가 데이터 과학자에게 아주 풍부하고 일반적인, 그리고 또 특수한 기능들을 제공해줍니다. 21 | 22 | 머신러닝과 딥러닝 그리고 데이터 분석은 데이터 주도 분석이라는 점에서 근본적으로 반복 작업입니다. 그래서 반복 작업을 빠르게 처리하고 손쉽게 조작할 수 있는 도구가 필수인 것입니다. 그러한 이유로 파이썬이 선택 되고 있는 것입니다. 23 | 24 | 범용 프로그래밍 언어로서 파이썬은 복잡한 그래픽 사용자 인터페이스\(GUI\)나 웹 서비스도 만들 수 있으며 기존 시스템과 통합하기도 좋습니다. 25 | 26 | 머신러닝, 딥러닝을 제대로 공부하고 싶다면 다른 프로그래밍 언어보다 파이썬을 공부하는 것이 훨씬 유리합니다. 파이썬의 딥러닝/머신러닝 관련 라이브러리들은 다른 언어에서 따라올 수 없는 부분입니다. 유명한 파이썬 라이브러리로는 넘파이\(NumPy\), 판다스\(Pandas\), 스페이시\(SpaCy\), 사이킷-런\(Scikit-learn\)등이 있습니다. 27 | 28 | 딥러닝 관련하여 텐서플로우\(TensorFlow\), 파이토치\(PyTorch\), 체이너\(Chainer\), 아파치 MXNet\(Apache MXNet\), 테아노\(Theano\) 등 거의 모든 프로젝트에서 파이썬을 가장 우선시합니다. 대부분의 머신러닝과 딥 러닝 프레임워크는 파이썬용으로 만들어지며, AI 분야에서 일하는 거의 모든 사람들이 파이썬을 이야기합니다. 29 | 30 | -------------------------------------------------------------------------------- /4.-numpy-and-scipy/4.3-scipy/README.md: -------------------------------------------------------------------------------- 1 | # 4.3 SciPy 2 | 3 | SciPy는 파이썬을 기반으로 하여 과학, 분석, 그리고 엔지니어링을 위한 과학\(계산\)적 컴퓨팅 영역의 여러 기본적인 작업을 위한 라이브러리입니다. Scipy는 기본적으로 Numpy, Matplotlib, Pandas, Sympy등 과 함께 동작을 합니다. NumPy와 Scipy를 함께 사용하면 확장 애드온을 포함한 MATLAB을 완벽하게 대체할 수 있습니다. 4 | 5 | SciPy는 NumPy위에서 구동되는 라이브러리 정도로 이해해도 무방합니다. SciPy는 기본적으로 NumPy의 ndarray를 기본 자료형으로 사용합니다. 일부 패키지는 중복되지만 SciPy가 보다 풍부한 기능을 제공합니다. SciPy는 다른 과학 컴퓨팅 영역을 다루는 하위 패키지로 구성됩니다. 6 | 7 | | scipy.cluster | Vector quantization / Kmeans | 8 | | :--- | :--- | 9 | | scipy.constants | Physical and mathematical constants | 10 | | scipy.fftpack | Fourier transform | 11 | | scipy.integrate | Integration routines 수치적분 루틴과 미분방정식 해법기 | 12 | | [scipy.interpolate](https://docs.scipy.org/doc/scipy/reference/interpolate.html#module-scipy.interpolate) | Interpolation | 13 | | [scipy.io](https://docs.scipy.org/doc/scipy/reference/io.html#module-scipy.io) | Data input and output | 14 | | [scipy.linalg](https://docs.scipy.org/doc/scipy/reference/linalg.html#module-scipy.linalg) | numpy.linalg에서 제공하는 것보다 더 확장된 선형대수 루틴과 매트릭스 분해 | 15 | | [scipy.ndimage](https://docs.scipy.org/doc/scipy/reference/ndimage.html#module-scipy.ndimage) | n-dimensional image package | 16 | | [scipy.odr](https://docs.scipy.org/doc/scipy/reference/odr.html#module-scipy.odr) | Orthogonal distance regression | 17 | | [scipy.optimize](https://docs.scipy.org/doc/scipy/reference/optimize.html#module-scipy.optimize) | 함수 최적화기와 방정식의 근을 구하는 알고리즘 | 18 | | [scipy.signal](https://docs.scipy.org/doc/scipy/reference/signal.html#module-scipy.signal) | 시그널 프로세싱 도구 | 19 | | [scipy.sparse](https://docs.scipy.org/doc/scipy/reference/sparse.html#module-scipy.sparse) | 희소 행렬과 희소 선형 시스템 풀이법 | 20 | | [scipy.spatial](https://docs.scipy.org/doc/scipy/reference/spatial.html#module-scipy.spatial) | Spatial data structures and algorithms | 21 | | [scipy.special](https://docs.scipy.org/doc/scipy/reference/special.html#module-scipy.special) | 감마 함수처럼 흔히 사용되는 수학 함수를 | 22 | | [scipy.stats](https://docs.scipy.org/doc/scipy/reference/stats.html#module-scipy.stats) | 표준 연속/이산 확률 분포와 다양한 통계 테스트 | 23 | 24 | SciPy에서 사용하는 기본 데이터 구조는 NumPy 모듈에서 제공하는 다차원 배열입니다. NumPy는 선형 대수학, 퓨리에 변환 및 난수 생성을 위한 몇 가지 기능을 제공하지만 SciPy에서 이와 동등한 기능을 제공하지는 않습니다. 25 | 26 | 기본적으로 모든 NumPy 함수는 SciPy 네임 스페이스를 통해 사용할 수 있습니다. SciPy를 가져올 때 NumPy 함수를 명시적으로 가져올 필요가 없습니다. 27 | 28 | SciPy를 이해하기 위해서는 방대한 수학적 지식이 필요합니다. 여기에서 어렵고 복잡한 수학 이론은 저도잘 모르고 코드에 대한 이해를 위주로 몇 가지 예제를 돌려보겠습니다. 29 | 30 | -------------------------------------------------------------------------------- /2./2.1./2.1.2..md: -------------------------------------------------------------------------------- 1 | # 2.1.2. 텐서플로 설치 2 | 3 | 4 | Anaconda Prompt에서 다음 명령으로 가상환경 onebook을 활성화시킨 후 가상환경내에서 우리가 필요한 다른 라이브러리들을 설치합니다. 5 | 6 | >conda activate onebook 혹은 >activate onebook 명령으로 가상환경 onebook을 활성화 시킵니다. 7 | 8 | Tensorflow 2.x 가 사용가능합니다. 이전 버전 Tensorflow 경우 다음과 같이 구분 됩니다. Python 3.8 지원에는 TensorFlow 2.2 이상이 필요합니다. TensorFlow 1.x의 경우 CPU와 GPU 패키지는 다음과 같이 구분됩니다. 9 | 10 | * `tensorflow==1.15` - CPU 전용 출시 11 | * `tensorflow-gpu==1.15` - [GPU 지원](https://www.tensorflow.org/install/gpu?hl=ko)이 포함된 출시_\(Ubuntu 및 Windows\)_ 12 | 13 | ![](../../.gitbook/assets/212-1.png) 14 | 15 | 아나콘다 배포판에는 텐서플로 최신 버전이 늦게 포함되므로 파이썬 기본 패키지 관리자인 pip로 텐서플로를 설치합니다. 16 | 17 | 텐서플로우를 설치하기 전에 일단 pip 를 다시한번 업그레이드시켜줍니다. 18 | 19 | ```text 20 | (onebook)>python -m pip install --upgrade pip 21 | ``` 22 | 23 | 무언가가 설치 안되어 있다는 메시지가 나온다면 pip를 사용하여 다시 설치해 줍니다. 24 | 25 | 제 경우에는 mkl-random 이 설치 안되어 있다고 하여 다시 설치해 주었습니다. 26 | 27 | >pip install mkl-random 28 | 29 | 일반적으로 CPU만 사용하는 버전은 30 | 31 | ```text 32 | (koreait)>pip install --upgrade tensorflow 33 | ``` 34 | 35 | 또는 36 | 37 | ```text 38 | (onebook)>conda install tensorflow 39 | ``` 40 | 41 | ![](../../.gitbook/assets/212-2.png) 42 | 43 | GPU 지원을 받는 버전은 다음과 같은 명령으로 설치해 줍니다. 44 | 45 | ```text 46 | (onebook)>pip install tensorflow-gpu 혹은 47 | (onebook)>pip install --ignore-installed --upgrade tensorflow-gpu 48 | ``` 49 | 50 | Tensorflow 를 지원하는 NVIDIA 그래픽 카드를 사용한다면 CUDA를 설치해야 합니다. 51 | 52 | - NVIDIA Cuda Toolkit 설치: [https://developer.nvidia.com/cuda-toolkit-archive](https://developer.nvidia.com/cuda-toolkit-archive) 53 | 54 | 또한 cuDNN을 설치해야 합니다. cuDNN을 받으려면 NVIDIA DEVELOPER 홈페이지에 가입이 필요합니다. 텐서플로우\(Tensorflow\) GPU 버전 설치하기는 이곳에서 다루지 않겠습니다. 55 | 56 | - cuDNN 다운로드: [https://developer.nvidia.com/rdp/cudnn-archive](https://developer.nvidia.com/rdp/cudnn-archive) 57 | 58 | 물론 tensorflow를 설치할 때 conda를 사용해도 됩니다 59 | 60 | 다음과 같이 모든 설치 과정이 끝날 때까지 기다립니다. 61 | 62 | ![](../../.gitbook/assets/212-3.png) 63 | 64 | 텐서프로가 설치 완료되면 파이썬을 실행하여 텐서플로가 동작하는지 확인해 봅니다. 65 | 66 | Anaconda Prompt에서 onebook 가상환경인지를 확인한 후 python을 실행합니다. 다음을 코드를 실행 해 봅니다. 67 | 68 | ```text 69 | >>> import tensorflow as tf 70 | >>> print(tf.__version__) 71 | 1.12.0 72 | >>> hello=tf.constant(‘Hello World’) 73 | >>> sess=tf.Session() 74 | >>> print(sess.run(hello)) 75 | b’Hello World’ 76 | >>> 77 | ``` 78 | 79 | ![](../../.gitbook/assets/image%20%286%29.png) 80 | 81 | 출력된 2.3.1 은 현재 내 개발환경에 설치된 텐서플로의 버전이고 b’Hello world’는 print 텐서플로의 세션을 실행하여 출력 된 문자입니다. 82 | 83 | -------------------------------------------------------------------------------- /3./1.2-python.md: -------------------------------------------------------------------------------- 1 | # 1.2. 파이썬\(Python\) 2 | 3 | 머신러닝과 딥러닝 그리고 데이터 분석 작업은 반복 작업을 빠르게 처리하고 손쉽게 조작할 수 있는 도구가 필요 합니다. 가장 적합한 도구로 선택되고 있는 것이 바로 파이썬입니다. 머신러닝, 딥러닝을 제대로 공부하고 싶다면 다른 프로그래밍 언어보다 파이썬을 공부하는 것이 훨씬 유리합니다. 파이썬의 딥러닝/머신러닝 관련 라이브러리들은 다른 언어에서 따라올 수 없는 부분입니다. 4 | 5 | 6 | 파이썬\(영어: Python\)은 1991년 프로그래머인 귀도 반 로섬\(Guido van Rossum\)이 발표한 고급 프로그래밍 언어로, 플랫폼 독립적이며 인터프리터식, 객체지향적, 동적 타이핑\(dynamically typed\) 대화형 언어입니다. 파이썬이라는 이름은 귀도가 좋아하는 코미디 〈Monty Python's Flying Circus〉에서 따온 것입니다. 7 | 8 | 파이썬의 사전적인 의미는 고대 신화에 나오는 파르나소스 산의 동굴에 살던 큰 뱀을 뜻하며, 아폴로 신이 델파이에서 파이썬을 퇴치했다는 이야기가 전해지고 있습니다. 대부분의 파이썬 책 표지와 아이콘이 뱀 모양으로 그려져 있는 이유가 여기에 있습니다. 9 | 10 | ![](../.gitbook/assets/121.png) 11 | 12 | 파이썬은 비영리의 파이썬 소프트웨어 재단이 관리하는 개방형, 공동체 기반 개발 모델을 가지고 있습니다. C언어로 구현된 C파이썬 구현이 사실상의 표준입니다. 13 | 14 | 파이썬은 초보자부터 전문가까지 사용자층을 보유하고 있습니다. 동적 타이핑\(dynamic typing\)이 가능한 범용 프로그래밍 언어로, 펄 및 루비와 자주 비교됩니다. 다양한 플랫폼에서 쓸 수 있고, 라이브러리\(모듈\)가 풍부하여, 대학을 비롯한 여러 교육 기관, 연구 기관 및 산업계에서 이용이 증가하고 있습니다. 또 파이썬은 순수한 프로그램 언어로서의 기능 외에도 다른 언어로 쓰인 모듈들을 연결하는 접착 언어\(glue language\)로써 자주 이용됩니다. 실제 파이썬은 Paint Shop Pro, 오토데스크 마야, TORRENT, 카카오톡 등과 같은 많은 상용 응용 프로그램에서 스크립트 언어로 채용되고 있습니다. 도움말 문서도 정리가 잘 되어 있으며, 유니코드 문자열을 지원해서 다양한 언어의 문자 처리에도 능합니다. 15 | 16 | 파이썬은 기본적으로 인터프리터 위에서 실행될 것을 염두에 두고 설계되었습니다. 파이썬은 컴파일러 언어가 아닌 인터프리터 언어이기 때문에 한줄 한줄 라인별로 프로그램을 실행 시키며 결과를 확인 할 수 있습니다. 17 | 18 | C, JAVA, Python 등과 같은 고급언어로 쓰여진 프로그램이 컴퓨터에서 수행되기 위해서는 컴퓨터가 직접 이해할 수 있는 언어로 바꾸어 주어야 합니다. 이러한 일을 컴파일이라고 합니다. 19 | 20 | 컴파일 언어와 인터프린터 언어의 가장 큰 차이점은 컴파일 시점 입니다. 컴파일러는 프로그램 전부를 실행 전에 한꺼번에 기계어로 번역합니다. 기계어로 번역된 실행 파일\(.exe\)이 존재합니다. 인터프리터는 한줄씩 기계어로 번역과 실행이 동시에 이루어진다. 즉, 별도의 실행파일이 존재하지 않습니는다. 21 | 22 | 파이썬은 데이터 과학 분야를 위한 표준 프로그래밍 언어가 되어 가고 있습니다. 파이썬은 범용 프로그래밍 언어의 장점은 물론 MATLAB과 R 같은 특정 분야를 위한 스크립팅 언어의 편리함을 함께 갖추고 있습니다. 또한 파이썬은 데이터 적재, 시각화, 통계, 자연어 처리, 이미지 처리 등에 필요한 라이브러리들을 가지고 있습니다. 이러한 많은 도구가 데이터 과학자에게 아주 풍부하고 일반적인, 그리고 또 특수한 기능들을 제공해줍니다. 23 | 24 | 머신러닝과 딥러닝 그리고 데이터 분석은 데이터 주도 분석이라는 점에서 근본적으로 반복 작업입니다. 그래서 반복 작업을 빠르게 처리하고 손쉽게 조작할 수 있는 도구가 필수인 것입니다. 그러한 이유로 파이썬이 선택 되고 있는 것입니다. 25 | 26 | 범용 프로그래밍 언어로서 파이썬은 복잡한 그래픽 사용자 인터페이스\(GUI\)나 웹 서비스도 만들 수 있으며 기존 시스템과 통합하기도 좋습니다. 27 | 28 | 머신러닝, 딥러닝을 제대로 공부하고 싶다면 다른 프로그래밍 언어보다 파이썬을 공부하는 것이 훨씬 유리합니다. 파이썬의 딥러닝/머신러닝 관련 라이브러리들은 다른 언어에서 따라올 수 없는 부분입니다. 유명한 파이썬 라이브러리로는 넘파이\(NumPy\), 판다스\(Pandas\), 스페이시\(SpaCy\), 사이킷-런\(Scikit-learn\)등이 있습니다. 29 | 30 | 딥러닝 관련하여 텐서플로우\(TensorFlow\), 파이토치\(PyTorch\), 체이너\(Chainer\), 아파치 MXNet\(Apache MXNet\), 테아노\(Theano\) 등 거의 모든 프로젝트에서 파이썬을 가장 우선시합니다. 대부분의 머신러닝과 딥 러닝 프레임워크는 파이썬용으로 만들어지며, AI 분야에서 일하는 거의 모든 사람들이 파이썬을 이야기합니다. 31 | 32 | -------------------------------------------------------------------------------- /4.-numpy-and-scipy/4.3-scipy/4.3.1.-interpolation.md: -------------------------------------------------------------------------------- 1 | # 4.3.1. Interpolation 2 | 3 | 보간법\(interpolation\)이란 통계적 혹은 실험적으로 구해진 데이터들\(xi\)로부터, 주어진 데이터를 만족하는 근사 함수\(f\(x\)\)를 구하고, 이 식을 이용하여 주어진 변수에 대한 함수 값을 구하는 일련의 과정을 의미합니다. 예를 들어, \(0, 0\), \(1, 10\), \(2, 20\)이 주어졌을 때, 이들에 대한 근사 함수를 f\(x\) = 10x로 구하고, 1.5에 대한 함수 값으로 15를 구하는 것입니다. 4 | 5 | 사인\(sine\) 함수에 가까운 실험 데이터를 생각해 보겠습니다. 다음 예제는 NumPy, Matplotlib, SciPy를 종합적으로 사용합니다. 6 | 7 | ```python 8 | import numpy as np 9 | from scipy.interpolate import interp1d 10 | from matplotlib import pyplot as plt 11 | 12 | # Cosine 함수를 0부터 10pi까지 20개 만든다. 13 | x = np.linspace(0,10*np.pi, 20) 14 | y = np.cos(x) 15 | 16 | #interoperate 함수로 보간법을 적용하여 linear(선형보정) quadratic(부드러운 보정) 두가지 방법으로 만든다 17 | fl = interp1d(x,y,kind = 'linear') 18 | fq = interp1d(x,y,kind = 'quadratic') 19 | 20 | xint = np.linspace(x.min(), x.max(), 1000) 21 | yintl = fl(xint) 22 | yintq = fq(xint) 23 | 24 | # Plot the data and the interpolation 25 | plt.plot(xint, yintl, color = 'green', linewidth=2) 26 | plt.plot(xint, yintq, color = 'red', linewidth=2) 27 | plt.legend(['Linear','Quadratic']) 28 | plt.plot(x,y,'o') #값의 위치를 점으로 표현 29 | plt.ylim(-2,2) 30 | 31 | plt.title('Interoperate') 32 | plt.show() 33 | ``` 34 | 35 | 6행의 코드는 시작점 0부터 10\*np.pi 까지 균등하게 나뉘어진 20개 값을 만들어 냅니다. 즉 다음과 같은 값이 만들어 집니다. 36 | 37 | \[ 0. 1.65346982 3.30693964 4.96040945 6.61387927 8.26734909 9.92081891 11.57428872 13.22775854 14.88122836 16.53469818 18.18816799 19.84163781 21.49510763 23.14857745 24.80204727 26.45551708 28.1089869 29.76245672 31.41592654\] 38 | 39 | 7행의 cosine 함수를 실행 하면 다음과 같은 값이 구해 집니다. 40 | 41 | \[ 1. -0.08257935 -0.9863613 0.24548549 0.94581724 -0.40169542 -0.87947375 0.54694816 0.78914051 -0.67728157 -0.67728157 0.78914051 0.54694816 -0.87947375 -0.40169542 0.94581724 0.24548549 -0.9863613 -0.08257935 1. \] 42 | 43 | 10행과 11행은 SciPy interpolation\(보간법\)을 사용하는 부분입니다. scipy.interpolate의 interp1d 클래스는 선형 보간법을 사용하여 주어진 데이터로 정의된 도메인 내 어디에서나 평가할 수있는 고정된 데이터 포인트를 기반으로 함수를 만드는 편리한 방법입니다. 이 클래스의 인스턴스는 데이터를 구성하는 1-d 벡터를 전달하여 만들어집니다. interp1d 에서 지원하는 보간법의 종류는 ‘linear’, ‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘previous’, ‘next’, where ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’ 등이 있습니다. 44 | 45 | 13행, 14행은 xint 를 x의 최소값 부터 x의 최대값까지 1000개로 세분화 하고 linear, quadratic 보간법으로 yint 값을 구하는 부분입니다. 46 | 47 | 18행 부터는 matplotlib를 사용하여 플롯하는 부분입니다. 48 | 49 | 위의 코드를 실행하면 다음과 같은 그래프가 출력 됩니다. 50 | 51 | ![](../../.gitbook/assets/31501.png) 52 | 53 | 주어진 점들을 가지고 붉은색의 그래프를 그렸습니다. X축의 어떠한 위치에서도 Y값을 예상 할 수 있습니다. 54 | 55 | -------------------------------------------------------------------------------- /3./3.9.-strings/3.9.4..md: -------------------------------------------------------------------------------- 1 | # 3.9.4. 문자열 포맷 연산자 2 | 3 | 문자열 포맷 연산자 % 는 C의 printf\(\) 함수와 비슷합니다. 일정한 포맷에 맞춰 문자열을 조합하는 것을 문자열 포맷팅이라 합니다. 4 | 5 | ```text 6 | print "My name is %s and weight is %d kg!" % ('Zara', 21) 7 | ``` 8 | 9 | 위의 코드가 실행 되면 다음과 같은 결과를 출력 합니다. 10 | 11 | My name is Zara and weight is 21 kg! 12 | 13 | 다음은 % 와 함께 사용할 수 있는 변환 지시어 입니다. 14 | 15 | | Format Symbol | Conversion | 16 | | :--- | :--- | 17 | | %c | character | 18 | | %s | string conversion via str\(\) prior to formatting | 19 | | %i | signed decimal integer | 20 | | %d | signed decimal integer | 21 | | %u | unsigned decimal integer | 22 | | %o | octal integer | 23 | | %x | hexadecimal integer \(lowercase letters\) | 24 | | %X | hexadecimal integer \(UPPERcase letters\) | 25 | | %e | exponential notation \(with lowercase 'e'\) | 26 | | %E | exponential notation \(with UPPERcase 'E'\) | 27 | | %f | floating point real number | 28 | | %g | the shorter of %f and %e | 29 | | %G | the shorter of %f and %E | 30 | 31 | 기타 지원되는 기호 및 기능은 다음 표에 나열되어 있습니다. 32 | 33 | | Symbol | Functionality | 34 | | :--- | :--- | 35 | | \* | argument specifies width or precision | 36 | | - | left justification | 37 | | + | display the sign | 38 | | <sp> | leave a blank space before a positive number | 39 | | \# | add the octal leading zero \( '0' \) or hexadecimal leading '0x' or '0X', depending on whether 'x' or 'X' were used. | 40 | | 0 | pad from left with zeros \(instead of spaces\) | 41 | | % | '%%' leaves you with a single literal '%' | 42 | | \(var\) | mapping variable \(dictionary arguments\) | 43 | | m.n. | m is the minimum total width and n is the number of digits to display after the decimal point \(if appl.\) | 44 | 45 | format 함수는 문자를 다양한 형태로 포맷팅하는데 사용합니다. 위치를 기준으로 하는 인덱스형, 필드명을 기준으로 하는 키워드형, 리스트 인덱스형으로 사용할 수 있습니다. 46 | 47 | ```python 48 | sub1 = "python string!" 49 | sub2 = "an arg" 50 | 51 | a = "i am a %s" % sub1 52 | b = "i am a {0}".format(sub1) 53 | c = "with %(kwarg)s!" % {'kwarg':sub2} 54 | d = "with {kwarg}!".format(kwarg=sub2) 55 | 56 | print(a) # "i am a python string!" 57 | print(b) # "i am a python string!" 58 | print(c) # "with an arg!" 59 | print(d) # "with an arg!" 60 | 61 | # 위치를 기준으로 한 포맷팅 62 | print('We are the {} who say "{}!"'.format('student', 'children')) 63 | print('We are the {0} who say "{1}!"'.format('student', 'children')) 64 | # 필드명을 기준으로 한 포맷팅 65 | print("Age of student {name} is {age}".format(age=29, name='James')) 66 | # object의 인덱스 혹은 키를 사용하여 포맷팅 67 | pos = [12.5, 35, 90] 68 | print("A의 좌표는 x = {p[0]}, y = {p[1]}, z = {p[2]}".format(p=pos)) 69 | ``` 70 | 71 | -------------------------------------------------------------------------------- /4.-and/5.2./5.2.3..md: -------------------------------------------------------------------------------- 1 | # 5.2.3. 대표적인 딥러닝 모델 2 | 3 | 심층 신경망의 기본 단위는 퍼셉트론이라고 하였습니다. 바로 앞에서는 다층 퍼셉트론 구조를 소개하였는데, 복수 개의 퍼셉트론을 서로 어떻게 연결하느냐에 따라 그와는 다른 새로운 구조를 형성할수도 있습니다. 다루고자 하는 데이터의 속성에 따라 효과적으로 적용할 수 있는 특수한 구조의 심층 신경망이 여럿 발표되었는데, 그 중 현재 가장 많이 쓰는 것 3가지를 소개해 드리고자 합니다. 4 | 5 | **1\) 완전 연결 신경망** 6 | 7 | 완전 연결 신경망\(fully-connected neural network\)은, 사실 앞서 소개했던 다층 퍼셉트론을 지칭하는 또 다른 용어입니다. 다만 여러 구조의 심층 신경망이 추가로 발표되면서 기존의 다층 퍼셉트론이라는 표현을 사용하기 다소 애매해졌고, 이에 따라 오늘날에는 완전 연결 신경망이라는 표현을 널리 사용하고 있습니다. 8 | 9 | 완전 연결 신경망은, 위의 다층 퍼셉트론의 일반적 구조에서와 같이 노드 간에 횡적/종적으로 2차원적 연결을 이룹니다. 이 때, 서로 같은 층에 위치한 노드 간에는 연결 관계가 존재하지 않으며, 바로 인접한 층에 위치한 노드들 간에만 연결 관계가 존재한다는 것이 핵심적인 특징입니다. 10 | 11 | **2\) 컨볼루션 신경망, 합성곱 신경망\(CNN, Convolutional Neural Network\)** 12 | 13 | 완전연결 신경망은 이름에서도 알 수 있듯이 각 유닛\(뉴런\)이 앞 계층의 모든 유닛과 연결되어 있습니다. 반면, 합성곱\(Convolution\) 계층에서는 각각의 유닛은 이전 계층에서 근접해 있는 몇 개의 유닛들에만 연결됩니다. 또한 모든 유닛은 이전 계층에 동일한 방법으로 연결되어 있으므로 같은 값의 가중치와 구조를 공유합니다. 그리고 이 연결 사이에 합성곱 연산이 들어 있어 이 신경망을 합성곱 신경망이라 부릅니다. 가장 많이 알려진 딥러닝 방법으로 특히 이미지 처리에 적합합니다. 입력을 필터로 합성곱하여 특징을 추출하고 이런 합성곱 레이어를 여러 계층으로 연결합니다. 14 | 15 | 합성곱 레이어를 지날때마다 저수준의 특징들이 점차 고수준의 특징들로 만들어집니다. 그리고 마지막에는 완전연결 레이어로 최종 결과를 학습합니다. 16 | 17 | Convolution 작업은 CNN의 핵심이며 이를 사용하는 방법은 네트워크 성능의 중요한 결정 요소가됩니다. 예를 들어 CNN에서 3x3 크기보다 큰 것을 사용하는 것은 별로 의미가 없습니다. 예를 들어 네트워크에서 5x5, 7x7 등을 사용하지 마십시오. 반복적으로 VGGNet과 ResNet을 사용하여 3x3 컨볼루션을 순차적으로 스태킹하면 더 큰 크기의 컨볼루션과 동일한 수용 필드를 효과적으로 구현하고 계산 효율성은 더 높일 수 있습니다. 18 | 19 | CNN의 일반적인 구조는 다음 그림과 같습니다. 20 | 21 | ![](../../.gitbook/assets/52301%20%281%29.png) 22 | 23 | 합성곱 신경망의 경우에도 여태까지의 신경망과 마찬가지로 여러 계층을 조합하여 만들어진다. 다만 일반적인 신경망과는 다르게, 합성곱 계층\(Convolution Layer\)와 풀링 계층\(Pooling Layer\)이 추가됩니다. 24 | 25 | **3\) 순환 신경망** 26 | 27 | 순환 신경망 **RNN**\(Recurrent Neural Network\)은 자연어\(NL, Natural Language\)나 음성신호, 주식과 같은 연속적인\(sequential\) **시계열**\(time series\) 데이터에 적합한 모델입니다. 28 | 29 | RNN에서 R은 Recurrent라는 단어로 반복적인, 되풀이되는 등의 뜻입니다. 30 | 31 | ![](../../.gitbook/assets/52302.png) 32 | 33 | RNN은 위 그림과 같은 방식으로 과거 자신의 정보\(가중치\)를 기억하고 이를 학습에 반영합니다. 즉 RNN은 은닉층의 뉴런이 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 자기 자신의 다음 계산의 입력으로 보내는 특징을 갖고 있습니다. 가운데 은닉층의 뉴런에 자기 자신을 가리키는 화살표가 있는데 이 화살표를 Recurrent Weight라고 합니다. 이 Recurrent Weight는 과거의 데이터에 대한 정보를 기억할수 있는 기능을 제공합니다. RNN에서 은닉층의 뉴런은 각각의 시점\(time-step\)에서 바로 이전 시점\(time step\)에서의 은닉층의 뉴런에서 나온 값들을 계속해서 자신의 입력으로 보내는 재귀적 활동을 하고 있습니다. 이는 현재 시점에서의 은닉층의 뉴런이 갖고있는 값은 과거의 은닉층의 뉴런들의 값에 영향을 받은 것임을 의미합니다. 이는 이전의 값을 기억하려고 하는 일종의 메모리 역할을 하고 있는 것이므로 은닉층의 뉴런을 메모리 셀이라고 부르기도 합니다. 34 | 35 | 그리고 은닉층의 뉴런이 다음 시점에 다시 자신에게 보내는 이 값을 은닉 상태\(hidden state\)라고 합니다. 즉, 다시 말해, 현재 시점의 은닉층의 뉴런은 이전 시점에서의 은닉층의 뉴런이 보낸 은닉 상태값을 다시 계산을 위한 입력값으로 사용합니다. 36 | 37 | -------------------------------------------------------------------------------- /4.-and/5.3.-mnist-dataset/README.md: -------------------------------------------------------------------------------- 1 | # 5.3. Tensorflow를 사용한 학습 2 | 3 | 통계 및 다양한 수학 알고리즘을 공부해야 하는 머신러닝은 매우 복잡해 보이지만 TensorFlow와 같은 많은 오픈 소스 패키지가 생겨나고 발전함에 따라 머신러닝 모델을 구축하는 어려운 작업은 이전보다 훨씬 쉬워졌습니다. 4 | 5 | 텐서플로우\(TensorFlow\)는 기계 학습과 딥러닝을 위해 구글에서 만든 오픈소스 라이브러리입니다. 6 | 7 | TensorFlow는 데이터의 기본 단위로 취급할 수 있는 Tensors 개념을 사용합니다. 텐서는 다차원 배열을 통해 표현할 수있는 N 차원 벡터로 정의할 수 있습니다. 8 | 9 | ![](../../.gitbook/assets/54001.jpg) 10 | 11 | TensorFlow는 데이터 플로우 그래프\(Data Flow Graph\) 방식을 사용합니다. 12 | 13 | 데이터 플로우 그래프란 수학 계산과 데이터의 흐름을 노드\(Node\)와 엣지\(Edge\)를 사용한 방향 그래프\(Directed Graph\) 표현입니다. 14 | 15 | Tensor란 많은 데이터를 효과적으로 처리하는 자료구조를 말하며 다차원 array, list라고 생각하면 됩니다. Flow란 결국 Graph를 말합니다. 즉 모든 계산을 쉽게 하기 위해서 각각의 연산을 잘게 쪼개고 이것을 Graph로 연결한 것입니다. 16 | 17 | 일단 텐서플로우에서 사용하는 기본 용어부터 살펴보겠습니다. 18 | 19 | * **오퍼레이션\(Operation\)** 20 | 21 | 그래프 상의 노드는 오퍼레이션\(줄임말 _op_\)으로 불립니다. 오퍼레이션은 하나 이상의 _텐서_를 받을 수 있습니다. 오퍼레이션은 계산을 수행하고, 결과를 하나 이상의 텐서로 반환할 수 있습니다. 즉 Operation\(op\)란 동작을 정의한 것입니다. 22 | 23 | * **텐서\(Tensor\)** 24 | 25 | 내부적으로 모든 데이터는 텐서를 통해 표현됩니다. 텐서는 일종의 다차원 배열인데, 그래프 내의 오퍼레이션 간에는 텐서만이 전달됩니다 26 | 27 | * **세션\(Session\)** 28 | 29 | 그래프를 실행하기 위해서는 세션 객체가 필요합니다. 세션은 오퍼레이션의 실행 환경을 캡슐화한 것입니다. 30 | 31 | * **변수\(Variables\)** 32 | 33 | 변수는 그래프의 실행시, 패러미터를 저장하고 갱신하는데 사용됩니다. 메모리 상에서 텐서를 저장하는 버퍼 역할을 합니다. 34 | 35 | Node란 수학적 op의 그래프 표현입니다. Edge란 Node와 Node를 연결한 것을 말하는데, 그래프의에서 에지는 그들 사이에서 전달되는 다차원 데이터 배열 \(텐서라고 함\)을 나타냅니다. 36 | 37 | TensorFlow에서는 텐서가 데이터의 중심 단위 임에 유의해야 합니다. 38 | 39 | 아래 주어진 그림으로 이러한 관계를 설명해 보겠습니다. 40 | 41 | ![](../../.gitbook/assets/54002.png) 42 | 43 | 여기서, add는 덧셈 연산을 나타내는 노드입니다. a와 b는 입력 텐서이고 c는 결과 텐서입니다. 44 | 45 | 이런 유연한 아키텍처를 통해 하나의 API로 데스크톱, 서버 또는 모바일 장치의 하나 이상의 CPU 또는 GPU에 계산을 배포할 수 있습니다. TensorFlow는 여러 API \(Application Programming Interfaces\)를 제공합니다. 이들은 크게 두 가지 범주로 나눌 수 있습니다. 46 | 47 | **Low level API:** 48 | 49 | * 완벽한 프로그래밍 제어 50 | * 기계 학습 연구자에게 권장 51 | * 모델을 정밀하게 제어 할 수 있습니다. 52 | * TensorFlow Core는 TensorFlow의 저수준 API입니다. 53 | 54 | **High level API:** 55 | 56 | * TensorFlow 코어 위에 구축 57 | * TensorFlow Core보다 배우고 사용하기 쉽습니다. 58 | * 반복적 인 작업을 다른 사용자간에보다 쉽고 일관되게 만들기 59 | * tf.contrib.learn은 상위 레벨 API의 예입니다. 60 | 61 | TensorFlow는 계산\(computation\)을 그래프\(graph\)로 표현하는 프로그래밍 시스템입니다. 그래프의 노드\(node\)는 연산\(op, operations의 줄임\)이라고 부릅니다. 하나의 연산은 0개 이상의 Tensor를 취해 어떤 계산을 한 뒤 0개 이상의 Tensor를 다시 반환합니다. Tensor는 형태를 가진 다차원 배열이라고 할 수 있습니다. 62 | 63 | TensorFlow에서 그래프는 계산을 기술한 것입니다. 어떤 것이든 계산하기 위해서는 반드시 그래프를 Session에 올려야 합니다. Session은 CPU나 GPU 같은 Devices에 그래프 연산을 올린 뒤 연산을 실행할 수 있는 메소드를 제공합니다. 이 메소드는 연산에 의해 생성된 텐서를 반환하는데, 이 텐서의 형태는 파이썬에서는 numpy의 ndarray 객체, C와 C++에서는 tensor flow::Tensor 개체입니다. 64 | 65 | -------------------------------------------------------------------------------- /4.-and/5.1./5.1.3.-mnist-dataset.md: -------------------------------------------------------------------------------- 1 | # 5.1.3. MNIST Dataset 소개 2 | 3 | TensorFlow 샘플에 보면 mnist 데이터셋이 많이 등장합니다. MNIST는 인공지능 연구의 권위자 LeCun교수가 만든 데이터 셋이고 현재 딥러닝을 공부할 때 반드시 거쳐야할 Hello, World같은 존재입니다. MNIST는 60,000개의 트레이닝 셋과 10,000개의 테스트 셋으로 이루어져 있고 이중 트레이닝 셋을 학습데이터로 사용하고 테스트 셋을 신경망을 검증하는 데에 사용합니다. 4 | MNIST는 간단한 컴퓨터 비전 데이터 세트로, 아래와 같이 손으로 쓰여진 이미지들로 구성되어 있습니다. 숫자는 0에서 1까지의 값을 갖는 고정 크기 이미지 \(28x28 픽셀\)로 크기 표준화되고 중심에 배치되었습니다. 간단히 하기 위해 각 이미지는 평평하게되어 784 피쳐의 1-D numpy 배열로 변환되었습니다 \(28 \* 28\). 5 | 6 | MNIST 데이터는 [Yann LeCun](http://yann.lecun.com/exdb/mnist/)의 웹사이트에서 제공합니다. 편의를 위해 데이터를 자동으로 다운로드하고 설치하는 코드를 포함해 놓았습니다. [코드](https://www.tensorflow.org/code/tensorflow/examples/tutorials/mnist/input_data.py)를 다운로드 하고아래와 같이 import하거나, 그냥 안에 붙여 넣으시면 됩니다. 7 | 8 | ```python 9 | from tensorflow.examples.tutorials.mnist import input_data 10 | mnist = input_data.read_data_sets("./samples/MNIST_data/", one_hot=True) 11 | ``` 12 | 13 | ![](../../.gitbook/assets/51301.png) 14 | 15 | Mnist 데이타셋에는 총 60,000개의 데이타가 있는데, 이 데이타는 크게 아래와 같이 세종류의 데이타 셋으로 나눠 집니다. 모델 학습을 위한 학습용 데이타인 mnist.train 그리고, 학습된 모델을 테스트하기 위한 테스트 데이타 셋은 minst.test, 그리고 모델을 확인하기 위한 mnist.validation 데이타셋으로 구별됩니다. 각 데이타는 아래와 같이 학습용 데이타 55000개, 테스트용 10,000개, 그리고, 확인용 데이타 5000개로 구성되어 있습니다. 16 | 17 | | 데이타셋 명 | 행렬 차원 | 데이타 종류 | 18 | | :--- | :--- | :--- | 19 | | mnist.train.images | 55000 x 784 | 학습 이미지 데이타 | 20 | | mnist.train.labels | 55000 x 10 | 학습 라벨 데이타 | 21 | | mnist.test.images | 10000 x 784 | 테스트용 이미지 데이타 | 22 | | mnist.test.labels | 10000 x 10 | 테스트용 라벨 데이타 | 23 | | mnist.validation.images | 5000 x 784 | 확인용 이미지 데이타 | 24 | | mnist.validation.labels | 5000 x 10 | 확인용 라벨 데이타 | 25 | 26 | 각 데이타셋은 학습을 위한 글자 이미지를 저장한 데이타 image 와, 그 이미지가 어떤 숫자인지를 나타낸 라벨 데이타인 label로 두개의 데이타 셋으로 구성되어 있습니다. 27 | 28 | **이미지** 29 | 30 | 먼저 이미지 데이타를 보면 아래 그림과 같이 28x28 로 구성되어 있는데, 31 | 32 | ![](../../.gitbook/assets/51302.png) 33 | 34 | 이를 2차원 행렬에서 1차원으로 쭈욱 핀 형태로 784개의 열을 가진 1차원 행렬로 변환되어 저장이 되어 있습니다. mnist.train.image는 이러한 784개의 열로 구성된 이미지가 55000개가 저장이 되어 있습니다. 35 | 36 | ![](../../.gitbook/assets/51303.png) 37 | 38 | 텐서플로우의 행렬을 나타내는 shape의 형태로는 shape=\[55000,784\] 이 됩니다. 39 | 40 | 마찬가지로, mnist.train.image 도 784개의 열로 구성된 숫자 이미지 데이타를 10000개를 가지고 있고 텐서플로우의 shape으로는 shape=\[10000,784\] 로 표현될 수 있습니다. 41 | 42 | **라벨** 43 | 44 | Label 은 이미지가 나타내는 숫자가 어떤 숫자인지를 나타내는 라벨 데이타로 10개의 숫자로 이루어진 1행 행렬이다. 0~9 순서로, 그 숫자이면 1 아니면 0으로 표현됩니다. 예를 들어 1인경우는 \[0,1,0,0,0,0,0,0,0,0,0\] 9인 경우는 \[0,0,0,0,0,0,0,0,0,1\] 로 표현됩니다. 45 | 46 | 이미지 데이타에 대한 라벨이기 때문에, 당연히 이미지 데이타 수만큼의 라벨을 가지게 됩니다. 47 | 48 | ![](../../.gitbook/assets/51304.png) 49 | 50 | Train 데이타 셋은 이미지가 55000개였기 때문에, Train의 label의 수 역시도 55000개가 됩니다. 51 | 52 | -------------------------------------------------------------------------------- /4.-numpy-and-scipy/4.1-numpy/4.1.1.-basic-operations.md: -------------------------------------------------------------------------------- 1 | # 4.1.1. Basic Operations 2 | 3 | NumPy 배열을 생성하는 가장 기본적인 함수는 array\(\) 입니다. 첫 번째 인자로 리스트를 받는데 이것으로 array객체를 생성합니다. 4 | 5 | ```text 6 | >>> np.array( [1, 2, 3] ) #1차 배열 (벡터) 생성 7 | >>> np.array( [ [1, 2, 3], [4, 5, 6] ) # 2x3 크기의 2차원 배열 (행렬) 생성 8 | ``` 9 | 10 | 파이썬의 내장 함수인 range\(\)와 유사하게 배열 객체를 반환해주는 arange\(\) 함수가 있습니다. 11 | 12 | np.arange\(10\) 라고 한다면 1차원 배얼 \[0,1,2, ... ,9\]를 생성하는 것입니다. 13 | 14 | 그리고 시작점과 끝점을 균일 간격으로 나눈 점들을 생성해주는 linspace\(\)함수도 있습니다. 15 | 16 | ```text 17 | c = np.linspace(0, 1, 6) # start, end, num-points 18 | d = np.linspace(0, 1, 5, endpoint=False) 19 | ``` 20 | 21 | ```text 22 | c= [0. 0.2 0.4 0.6 0.8 1. ] 23 | d= [0. 0.2 0.4 0.6 0.8] 24 | ``` 25 | 26 | 위의 코드에서 c는 시작점이 0 이고 끝점이 1이므로 이를 6 점으로 표시하려면 0.2 간격씩 띄우면 됩니다. d는 시작점이 0 이고 끝점이 1인데 5등분으로 나누는데 끝점을 포함하지 않으니 0.2 간격으로 나뉘어 집니다. 27 | 28 | 배열의 산술 연산자는 새 배열이 만들어지고 그 결과로 채워집니다. 다음의 코드로 NumPy 연산을 설명해 보겠습니다 29 | 30 | ```python 31 | import numpy as np 32 | 33 | a = np.array( [20,30,40,50] ) 34 | b = np.arange( 4 ) 35 | print("배열 a", a) 36 | print("arrange로 생성한 b",b) 37 | c = a-b 38 | print("c=a-b 의 결과값",c) 39 | print("b**2 의 결과값",b**2) 40 | print("a의 sine값 * 10 의 결과값",10*np.sin(a)) 41 | print("a가 35보다 작은지에 대한 비교 결과",a<35) 42 | 43 | AA = np.array( [[1,1], 44 | [0,1]] ) 45 | BB = np.array( [[2,0], 46 | [3,4]] ) 47 | print("AA * BB 의 결과값\n",AA * BB) 48 | print("AA @ BB 의 결과값\n",AA @ BB) 49 | print("AA.dot(BB) 의 결과값\n",AA.dot(BB)) 50 | ``` 51 | 52 | 위 코드의 실행 결과는 다음과 같습니다. 53 | 54 | ```text 55 | 배열 a [20 30 40 50] 56 | arrange로 생성한 b [0 1 2 3] 57 | c=a-b 의 결과값 [20 29 38 47] 58 | b**2 의 결과값 [0 1 4 9] 59 | a의 sine값 * 10 의 결과값 [ 9.12945251 -9.88031624 7.4511316 -2.62374854] 60 | a가 35보다 작은지에 대한 비교 결과 [ True True False False] 61 | AA * BB 의 결과값 62 | [[2 0] 63 | [0 4]] 64 | AA @ BB 의 결과값 65 | [[5 4] 66 | [3 4]] 67 | AA.dot(BB) 의 결과값 68 | [[5 4] 69 | [3 4]] 70 | ``` 71 | 72 | a = np.array\( \[20,30,40,50\] \) 1차원 배열로 NumPy 배열을 생성하여 그 이름을 a로 칭합니다. 73 | 74 | numpy.arange\(\[start,\] stop\[, step,\], dtype=None\) 함수는 start부터 stop 미만까지 step 간격으로 데이터 생성한 후 배열을 만드는 함수입니다. 따라서 b=np.arrange\(4\) 는 자동으로 \[0 1 2 3\] 라는 1차원 배열로 데이터가 존재하는 NumPy 배열을 생성합니다. 75 | 76 | c=a-b , b\*\*2 등 연산의 결과는 각각의 배열 값에 해당 연산을 한 것으로 계산하여 출력됩니다. \*는 행렬곱이 아니라 요소별 곱셈입니다. 77 | 78 | 벡터의 내적이나 매트릭스의 벡터 곱이나, 메트릭스 곱을 계산하기 위해 @ 혹은 dot 함수를 사용합니다. matrix multiplication에 대해서는 별도로 학습하기 바랍니다. 79 | 80 | AA.dot\(BB\) 메트릭스 곱은 AA\[0,0\]\*BB\[0,0\]+AA\[0,1\]\*BB\[1,0\]=5, AA\[0,0\]\*BB\[0,1\]+AA\[0,1\]\*BB\[1,1\]=4, AA\[1,0\]\*BB\[0,1\]+AA\[1,1\]\*BB\[1,1\]=3, AA\[1,0\]\*BB\[0,1\]+AA\[1,1\]\*BB\[1,1\]=4 가 나옵니다. 81 | 82 | -------------------------------------------------------------------------------- /4.-numpy-and-scipy/4.1-numpy/README.md: -------------------------------------------------------------------------------- 1 | # 4.1 NumPy 2 | 3 | Numpy는 파이썬이 계산과학분야에 이용될때 핵심 역할을 하는 라이브러리입니다. Numpy는 고성능의 다차원 배열 객체와 이를 다룰 도구를 제공합니다. 4 | 5 | **NumPy**는 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리할 수 있도록 지원하는 파이썬의 라이브러리입니다. NumPy는 데이터 구조 외에도 수치 계산을 위해 효율적으로 구현된 기능을 제공합니다. 6 | 7 | 파이썬으로 수치해석, 통계 관련 기능을 구현하려고 할 때 Numpy는 가장 기본이 되는 모듈입니다. 그만큼 Numpy는 수치해석/ 통계 관련 작업시 중요한 역할을 하므로, 파이썬으로 관련 분야에 도전하고자 한다면 반드시 이에 대한 기초를 잘 쌓아 두고 가야 합니다. 8 | 9 | NumPy의 주요 객체는 동일한 자료형의 다차원 배열입니다. NumPy의 차원은 축\(axes\)이라 합니다. 10 | 11 | Numpy 배열은 동일한 자료형을 가지는 값들이 격자판 형태로 있는 것입니다. 각각의 값들은 튜플\(이때 튜플은 양의 정수만을 요소값으로 갖습니다.\) 형태로 색인 됩니다. _rank_는 배열이 몇 차원인지를 의미합니다; _shape_는 는 각 차원의 크기를 알려주는 정수들이 모인 튜플입니다. 12 | 13 | 파이썬의 리스트를 중첩해 Numpy 배열을 초기화 할 수 있고, 대괄호를 통해 각 요소에 접근할 수 있습니다: 14 | 15 | 예를 들어 아래 예제에서 배열에는 2 개의 축이 있습니다. 첫 번째 축은 길이가 2이고 두 번째 축은 길이가 3이 됩니다. 16 | 17 | ```text 18 | [[ 1., 0., 0.], 19 | [ 0., 1., 2.]] 20 | ``` 21 | 22 | NumPy의 배열 클래스를 ndarray라고 하며 그냥 array 라고도 합니다. numpy.array는 표준 Python 라이브러리 클래스인 array.array와 다릅니다. array.array는 일차원 배열 만 처리하고 기능이 별로 없습니다. 23 | 24 | NumPy는 “Numerical Python“의 약자로 대규모 다차원 배열과 행렬 연산에 필요한 다양한 함수를 제공합니다. NumPy에 포함된 함수들은 다음과 같습니다. 25 | 26 | * zeros\(int\): int 개수만큼의 0으로 이루어진 array를 만들어 줍니다. Np.zeors\(10\)은 \(10,\) 형태의 0으로 이루어진 벡터를 생성합니다. 만약 특정한 형상으로 만들길 원한다면 뒤에 .reshape\(x,y..\)를 더하면 됩니다. 27 | * arange\(\): 흔히 쓰이는 range 함수와 유사합니다. 범위와 간격 설정이 가능. 원하는 범위의 어레이를 만들 수 있습니다. 형태와 차원을 원하는 대로 설정하고 싶으면 .reshape\(\)를 쓰자. 28 | * shape: 어떤 어레이 뒤에 이걸 붙이면 그 어레이의 형상을 출력합니다. 각 차원의 배열 크기를 나타내는 정수의 튜플입니다. n 행과 m 열이 있는 행렬의 경우 shape는 \(n, m\)이 됩니다. 29 | * ndarray.ndim: 배열의 축\(axe\)수 \(차원\) 30 | * ndarray.dtype : 배열 내의 요소의 형태를 기술합니다. 표준 파이썬 유형을 사용하여 dtype을 만들거나 지정할 수 있습니다. 31 | * ndarray.itemsize: 배열의 각 요소의 바이트 단위의 사이즈. 32 | * ndarray.data: 배열의 실제의 요소를 포함한 버퍼. 일반적으로 색인화 기능을 사용하여 배열의 요소에 액세스하기 때문에 이 속성을 사용할 필요가 없다. 33 | * size: 차원 정보는 없이 원소의 개수만을 출력합니다. 34 | * argmax\(\): 입력 값으로 들어온 매트릭스의 각 행/열별 최댓값의 인덱스를 산출합니다. Axis = 를 추가하면 열별\(0\) 혹은 행별\(1\) 최댓값 위치를 알 수 있습니다. 35 | * T: 벡터의 전치\(transpose\)를 수행합니다. 단 1차원 어레이는 상황에 따라 행백터 혹은 열벡터로 바뀌므로 굳이 T를 붙일 이유는 없다. 36 | 37 | ```python 38 | import numpy as np 39 | a = np.arange(15).reshape(3, 5) 40 | print(a) 41 | print(a.shape) 42 | print(a.ndim) 43 | print(a.dtype.name) 44 | print(a.itemsize) 45 | print(a.size) 46 | print(type(a)) 47 | 48 | b = np.array([6, 7, 8]) 49 | print(b) 50 | print(type(b)) 51 | ``` 52 | 53 | 위의 코드를 실행하면 다음과 같은 결과를 출력합니다. 54 | 55 | ```text 56 | [[ 0 1 2 3 4] 57 | [ 5 6 7 8 9] 58 | [10 11 12 13 14]] 59 | (3, 5) 60 | 2 61 | int32 62 | 4 63 | 15 64 | 65 | [6 7 8] 66 | 67 | ``` 68 | 69 | 70 | 71 | 참조 사이트 : [https://docs.scipy.org/doc/numpy/user/quickstart.html](https://docs.scipy.org/doc/numpy/user/quickstart.html) 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /4.-and/5.2./5.2.1..md: -------------------------------------------------------------------------------- 1 | # 5.2.1. 퍼셉트론 2 | 3 | 퍼셉트론은 인공신경망\(Neural Network\)과 딥러닝\(Deep Learning\)의 기초가 되는 이론입니다. 4 | 5 | 퍼셉트론의 동작은 노드\(뇌로 따지면 뉴런\)의 가중치와 입력치를 곱한 것을 모두 합한 값이 임계치보다 크면 활성화되고 1을 출력하며, 활성화되지 않으면 결과값으로 0을 출력하는 것입니다. 이를 그림으로 표현하면 아래와 같습니다. 즉 퍼셉트론은 2진\(Binary, 0과1\)값을 갖는 다중의 입력 x1, x2, x3…xn을 하나의 2진수 값으로 출력하는 모델입니다. 6 | 7 | ![](../../.gitbook/assets/52101.png) 8 | 9 | 위 퍼셉트론의 개념도를 보면, x1에 w1부터 xn에 wn까지의 값이 있는데 w\(Weight\)는 가중치라고 보면 됩니다. 컴퓨터의 판단 없이 실제 있는그대로의 Data 가 X값이며, W값은 가중치 혹은 보정치가 되는 값이라고 보면 됩니다. 10 | 11 | w값도 4개이고, x의 값도 네개이니, 위 개념도는 즉 x1w1, x2w2, x3w3, x4w4 값들이 다음 노드에 들어가는 구조입니다. 그리고 해당 값이 지정된 특정 값\(기준이 되는 값\)을 넘으면 1, 안 넘으면 0을 출력하는 것이 바로 퍼셉트론의 구조입니다. 12 | 13 | 즉 입력 벡터 x=\(x1,x2,...,xd\) 를 받아들인 뒤 각 성분에 가중치를 곱하고, 그 결과를 모두 합산한 후, 활성함수 σ\(⋅\)을 적용하는 것이라고 할 수 있습니다. 전체 과정을 수행하는 이 선형 모델을 하나의 함수 h\(⋅\)로 나타낼 수 있으며, 이를 **퍼셉트론\(perceptron\)**이라고 부릅니다. 14 | 15 | ![](../../.gitbook/assets/52102.png) 16 | 17 | 이를 공식으로 다시 풀면 아주 간단하게 나오게 됩니다. 즉, 입력값x 와 가중치 w 에 b\(bias\)라고 불리우는 추가적인 보정치값을 합했을 때, 0보다 높으면 True라고 인지하여 값을 전달하고, 0이하일 경우, 버리기 위해서 False값을 전달합니다 18 | 19 | 그러나, 퍼셉트론 모델은 실제 상황에서 결정을 만드는 모델로 적용하기엔 적합하지 않습니다. 다음 그림 은 퍼셉트론의 집합으로 더 추상적인 결정을 내릴 수 있는 모델을 설계한 것입니다. 20 | 21 | ![](../../.gitbook/assets/52103.png) 22 | 23 | 위 그림에서 왼쪽부터 1-layer,2-layer,3-layer라고 층으로 분류할 수 있습니다. 첫 번째 층에서의 입력들은 각각이 세 개의 결정을 출력합니다. 또 두 번째 층에서의 출력은 세 번째 층의 입력으로 사용되어 weighted sum을 구한 뒤 output을 출력합니다. 두 번째 층에서 나온 출력은 첫 번째 층의 출력보다 더 추상적이고 복잡한 단계입니다. 심지어 세 번째 층의 퍼셉트론은 더 추상적인 결정을 할 수 있습니다. 여기서 망의 층이 많아질수록 복잡한 결정을 만들 수 있단 걸 알 수 있습니다. 24 | 25 | 예를 들면, 치즈 페스티벌 외에 햄버거, 힙합, 체육 페스티벌들이 있을 때 그 페스티벌이 열리는 장소로 갈지 말지를 결정할 수 있습니다. 나는 치즈에 환장하지만 햄버거가 있는 곳은 가기도 싫다. 그러나 체육 페스티벌에 참여해야하고 힙합 페스티벌에는 여자 친구가 가기를 원합니다. 나의 결정은? 말로 설명하기 복잡한 이런 추상적인 결과를 퍼셉트론으로 이뤄진 여러 층의 모델로 상황별 입력을 통해 결정을 만들 수 있습니다. 26 | 27 | 위에서 퍼셉트론을 정의할 때 단일 출력을 가진다고 정의하였는데 위에 그림에선 하나의 퍼셉트론이 다중의 출력을 갖고 있습니다. 단지 출력이 여러 개의 퍼셉트론의 입력으로 사용되어짐을 그림으로 표현했을 뿐이지 여전히 하나의 퍼셉트론은 하나의 출력을 갖습니다. 28 | 29 | 퍼셉트론을 사용한 학습 방법은 처음에는 임의로 설정된 weight로 시작합니다. 학습 데이터를 퍼셉트론 모형에 입력하며 분류가 잘못됐을 때 weight를 개선해 나갑니다. weight를 개선해 나간다는 의미는 우리가 수학 문제를 잘못 풀었을 때 선생님이 다시 풀어오라고 하면 정답에 맞게 풀기 위해서 다시 풀고 다시 풀고 하다가 정답을 맞추는 것과 비슷합니다. 그래서 학습이라고 부릅니다. 하지만 퍼셉트론이 인공지능 분야에서 센세이션을 불러일으켰고 연구 과제도 이쪽으로 몰렸으나 이것이 가지는 한계점이 밝혀지면서 한동안 소외 받는 이론이 되었습니다. 퍼셉트론의 한계는 선형으로 분류를 할 수 있지만 XOR와 같이 선형 분류만 가능하며 비선형 분류는 불가능하다는 점입니다. 30 | 31 | XOR 논리는 exclusive\(배타적\) 논리연산이다. 아래의 진리표를 보면, x1과 x2 중 어느 한쪽이 1일 때만 1을 출력한다. 32 | 33 | | x1 | x2 | y | 34 | | :--- | :--- | :--- | 35 | | 0 | 0 | 0 | 36 | | 1 | 0 | 1 | 37 | | 0 | 1 | 1 | 38 | | 1 | 1 | 0 | 39 | 40 | 아래의 그림을 보면 XOR에서는 선형으로\(직선 하나로\) 분류가 불가능함을 알 수 있습니다. 퍼셉트론의 한계를 간략히 말하면, 직선 하나로 나눈 영역만 표현할 수 있어 XOR과 같은 데이터 형태는 분류가 불가능하다는 한계가 있습니다. 41 | 42 | ![출처: http://ecee.colorado.edu/~ecen4831/lectures/NNet3.html](../../.gitbook/assets/xor2.gif) 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | --------------------------------------------------------------------------------