แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” (GPU). แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” (GPU). แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜
แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒ” แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ— แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ—แƒ›แƒชแƒแƒ“แƒœแƒ”แƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒ 30 แƒฌแƒฃแƒ—แƒจแƒ˜, แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒ›แƒแƒชแƒœแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒš แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ–แƒ” (GPU).

แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒœแƒ•แƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ— แƒ แƒ แƒแƒ แƒ˜แƒก แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜.

แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ›แƒแƒ—แƒ”แƒ›แƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ›แƒแƒ“แƒ”แƒšแƒ˜, แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒ˜แƒกแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒ—แƒฃ แƒแƒžแƒแƒ แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒฎแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ‘แƒ˜แƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ–แƒ” - แƒชแƒแƒชแƒฎแƒแƒšแƒ˜ แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒ›แƒ˜แƒก แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฃแƒฏแƒ แƒ”แƒ“แƒ”แƒ‘แƒ˜แƒก แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒ˜. แƒ”แƒก แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒ แƒฌแƒแƒ แƒ›แƒแƒ˜แƒจแƒ•แƒ แƒขแƒ•แƒ˜แƒœแƒจแƒ˜ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒกแƒแƒก แƒ“แƒ แƒแƒ› แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ˜แƒกแƒแƒก.

แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ“แƒแƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ› แƒกแƒ˜แƒขแƒงแƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ’แƒแƒ’แƒ”แƒ‘แƒ˜แƒ—, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ•แƒแƒ แƒฏแƒ˜แƒจแƒแƒ‘แƒ”แƒœ. แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒก แƒฃแƒœแƒแƒ แƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒแƒ แƒขแƒ แƒแƒ“แƒ˜แƒชแƒ˜แƒฃแƒš แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ”แƒ‘แƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ—. แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒฃแƒ แƒแƒ“, แƒกแƒฌแƒแƒ•แƒšแƒ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒœแƒ”แƒ˜แƒ แƒแƒœแƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ”แƒคแƒ˜แƒชแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒžแƒแƒ•แƒœแƒแƒจแƒ˜. แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒจแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒš แƒฅแƒกแƒ”แƒšแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒแƒ›แƒแƒ˜แƒชแƒœแƒแƒก แƒ แƒ—แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ“แƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒแƒ แƒ˜แƒก, แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒœแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒแƒก แƒ’แƒแƒœแƒ–แƒแƒ’แƒแƒ“แƒ”แƒ‘แƒ.

แƒ›แƒแƒœแƒฅแƒแƒœแƒฃแƒ แƒ˜ แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—, แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒแƒ แƒ˜แƒก แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜แƒก แƒแƒ›แƒแƒชแƒœแƒแƒ‘แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜แƒก, แƒ“แƒ˜แƒกแƒ™แƒ แƒ˜แƒ›แƒ˜แƒœแƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒก, แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒฃแƒšแƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ.

ะžะฑะพั€ัƒะดะพะฒะฐะฝะธะต

แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒแƒฆแƒญแƒฃแƒ แƒ•แƒ˜แƒšแƒแƒ‘แƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ›แƒแƒกแƒ–แƒ” แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ Linux แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒ—. แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ—แƒ›แƒชแƒแƒ“แƒœแƒ”แƒแƒ‘แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒแƒฆแƒญแƒฃแƒ แƒ•แƒ˜แƒšแƒแƒ‘แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒซแƒšแƒแƒ•แƒ แƒ˜ แƒ“แƒ, แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒซแƒ•แƒ˜แƒ แƒ˜แƒ. แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒกแƒแƒช แƒฎแƒ”แƒšแƒ— แƒแƒ  แƒแƒฅแƒ•แƒก แƒ™แƒแƒ แƒ’แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ, แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ แƒ›แƒ˜แƒแƒฅแƒชแƒ˜แƒแƒ— แƒฆแƒ แƒฃแƒ‘แƒšแƒแƒ•แƒแƒœแƒ˜ แƒžแƒ แƒแƒ•แƒแƒ˜แƒ“แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒ”แƒ‘แƒก. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒ˜แƒฅแƒ˜แƒ แƒแƒ•แƒแƒ— แƒกแƒแƒญแƒ˜แƒ แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ“แƒ แƒ’แƒแƒ“แƒแƒ˜แƒฎแƒแƒ“แƒแƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ.

แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒจแƒ˜, แƒกแƒแƒ“แƒแƒช แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ, แƒ›แƒ” แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ แƒฃแƒกแƒฃแƒšแƒ˜ แƒฆแƒ แƒฃแƒ‘แƒšแƒแƒ•แƒแƒœแƒ˜ แƒžแƒ แƒแƒ•แƒแƒ˜แƒ“แƒ”แƒ แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒก. แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ แƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒ— แƒฅแƒ˜แƒ แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒฆแƒ แƒฃแƒ‘แƒšแƒแƒ•แƒแƒœ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒแƒ“ แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ—แƒ›แƒชแƒแƒ“แƒœแƒ”แƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒซแƒšแƒ˜แƒ”แƒ แƒ˜ Tesla V100 แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ”แƒ‘แƒ˜แƒ— (GPU) NVIDIA-แƒกแƒ’แƒแƒœ. แƒ›แƒแƒ™แƒšแƒ”แƒ“: แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ GPU-แƒ˜แƒ— แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒแƒ—แƒฏแƒ”แƒ  แƒฃแƒคแƒ แƒ แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒ˜ (แƒกแƒฌแƒ แƒแƒคแƒ˜) แƒแƒœแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒ˜ แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก CPU-แƒก (แƒชแƒœแƒแƒ‘แƒ˜แƒš แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒฃแƒ  แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒก) แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ”แƒก แƒ›แƒ˜แƒ˜แƒฆแƒฌแƒ”แƒ•แƒ GPU แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒฃแƒ›แƒ™แƒšแƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ”แƒ‘แƒก.

แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒšแƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒ˜แƒซแƒ˜แƒœแƒ”แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ“แƒฆแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜:

  • SSD แƒ“แƒ˜แƒกแƒ™แƒ˜ 150 GB
  • แƒแƒžแƒ”แƒ แƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ 32 GB
  • Tesla V100 16 แƒ’แƒ‘ แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ˜ 4 แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒ—

แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ”แƒ— Ubuntu 18.04 แƒฉแƒ•แƒ”แƒœแƒก แƒแƒžแƒแƒ แƒแƒขแƒ–แƒ”.

แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜, แƒ แƒแƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒแƒ“ แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒกแƒแƒ, แƒ›แƒ” แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒฃแƒœแƒฅแƒขแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ.

แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก Windows-แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒแƒ›แƒฃแƒจแƒแƒ OS. แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒกแƒแƒšแƒ˜ แƒแƒ› OS-แƒจแƒ˜ แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒก แƒขแƒแƒ•แƒ”แƒ‘แƒก. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒš แƒฎแƒ”แƒšแƒกแƒแƒฌแƒงแƒแƒก Cmder/. แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— แƒ›แƒ˜แƒœแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒ“แƒ แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— Cmder.exe. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก SSH-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—:

ssh root@server-ip-or-hostname

แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก-ip-แƒแƒœ-แƒฐแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“, แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ แƒแƒœ DNS แƒกแƒแƒฎแƒ”แƒšแƒ˜. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒ”แƒ— แƒžแƒแƒ แƒแƒšแƒ˜ แƒ“แƒ แƒ—แƒฃ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒแƒ— แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ.

Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-74-generic x86_64)

ML แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ”แƒœแƒ แƒแƒ แƒ˜แƒก Python. แƒ“แƒ Linux-แƒ–แƒ” แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒแƒ anaconda.

แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— แƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ˜แƒ—:

sudo apt-get update

แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— curl (แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ):

sudo apt-get install curl

แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— Anaconda Distribution-แƒ˜แƒก แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ:

cd /tmp
curl โ€“O https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh

แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ:

bash Anaconda3-2019.10-Linux-x86_64.sh

แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒจแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒแƒ’แƒ”แƒ—แƒฎแƒแƒ•แƒ”แƒ‘แƒแƒ— แƒ“แƒแƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒแƒ— แƒกแƒแƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ แƒฎแƒ”แƒšแƒจแƒ”แƒ™แƒ แƒฃแƒšแƒ”แƒ‘แƒ. แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒœแƒแƒฎแƒแƒ— แƒ”แƒก:

Thank you for installing Anaconda3!

แƒแƒฎแƒšแƒ แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒฉแƒแƒ แƒฉแƒ ML แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก; แƒฉแƒ•แƒ”แƒœ แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ— แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒšแƒ”แƒ‘แƒ—แƒแƒœ: แƒžแƒ˜แƒขแƒแƒ แƒฉแƒ˜ ะธ แƒขแƒ”แƒœแƒ–แƒแƒ แƒฃแƒšแƒ˜.

แƒฉแƒแƒ แƒฉแƒแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒแƒ–แƒแƒ แƒ“แƒแƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ” แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ›แƒ–แƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒแƒ› แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ— PyTorch-แƒ—แƒแƒœ. แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ—:

conda install pytorch torchvision cudatoolkit=10.1 -c pytorch

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒแƒ— Jupyter Notebook, แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ ML แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒ˜แƒกแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— แƒ™แƒแƒ“แƒ˜ แƒ“แƒ แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒœแƒแƒฎแƒแƒ— แƒ›แƒ˜แƒกแƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜. Jupyter Notebook แƒ›แƒแƒงแƒ•แƒ”แƒ‘แƒ Anaconda-แƒก แƒ“แƒ แƒฃแƒ™แƒ•แƒ” แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”. แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ— แƒ›แƒแƒก แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ“แƒ”แƒกแƒ™แƒขแƒแƒžแƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒ“แƒแƒœ.

แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒฏแƒ”แƒ  แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒ˜แƒ— Jupyter แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ–แƒฃแƒกแƒขแƒ”แƒ‘แƒก แƒžแƒแƒ แƒขแƒก 8080:

jupyter notebook --no-browser --port=8080 --allow-root

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœแƒก Cmder แƒ™แƒแƒœแƒกแƒแƒšแƒจแƒ˜ แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒฉแƒแƒœแƒแƒ แƒ—แƒ˜แƒก แƒ’แƒแƒฎแƒกแƒœแƒ˜แƒ— (แƒ–แƒ”แƒ“แƒ แƒ›แƒ”แƒœแƒ˜แƒฃ - แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒœแƒกแƒแƒšแƒ˜แƒก แƒ“แƒ˜แƒแƒšแƒแƒ’แƒ˜) แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ˜แƒ— 8080 แƒžแƒแƒ แƒขแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก SSH-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—:

ssh -L 8080:localhost:8080 root@server-ip-or-hostname

แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒจแƒ”แƒ•แƒ˜แƒงแƒ•แƒแƒœแƒ— แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒแƒก, แƒจแƒ”แƒ›แƒแƒ’แƒ•แƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒ”แƒœ แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒก แƒฉแƒ•แƒ”แƒœแƒก แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒจแƒ˜ Jupyter-แƒ˜แƒก แƒ’แƒแƒกแƒแƒฎแƒกแƒœแƒ”แƒšแƒแƒ“:

To access the notebook, open this file in a browser:
        file:///root/.local/share/jupyter/runtime/nbserver-18788-open.html
    Or copy and paste one of these URLs:
        http://localhost:8080/?token=cca0bd0b30857821194b9018a5394a4ed2322236f116d311
     or http://127.0.0.1:8080/?token=cca0bd0b30857821194b9018a5394a4ed2322236f116d311

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ‘แƒ›แƒฃแƒšแƒ˜ localhost-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:8080. แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ— แƒกแƒ แƒฃแƒšแƒ˜ แƒ’แƒ–แƒ แƒ“แƒ แƒฉแƒแƒกแƒ•แƒ˜แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒ˜แƒก แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜แƒก แƒ–แƒแƒšแƒจแƒ˜. Jupyter Notebook แƒ’แƒแƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ.

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ แƒ•แƒ”แƒฃแƒšแƒ˜: New - Notebook - Python 3.

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒแƒ›แƒแƒฌแƒ›แƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ˜แƒ› แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜แƒก แƒกแƒฌแƒแƒ แƒ˜ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ—. แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒ˜แƒขแƒแƒœแƒแƒ— PyTorch แƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ Jupyter-แƒจแƒ˜ แƒ“แƒ แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒแƒ— แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ (แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒฆแƒ˜แƒšแƒแƒ™แƒ˜):

from __future__ import print_function
import torch
x = torch.rand(5, 3)
print(x)

แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒแƒกแƒ”แƒ—แƒ˜:

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” (GPU). แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜

แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒฅแƒ•แƒ— แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒฉแƒ•แƒ”แƒœ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒกแƒฌแƒแƒ แƒแƒ“ แƒ“แƒแƒ•แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ— แƒ“แƒ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ!

แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒœแƒ”แƒ แƒ•แƒฃแƒš แƒฅแƒกแƒ”แƒšแƒก แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒ›แƒแƒชแƒœแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ•แƒ˜แƒฆแƒแƒ— แƒ”แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒแƒ“ แƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒแƒ‘แƒ.

แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒกแƒแƒฏแƒแƒ แƒแƒ“ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ› CIFAR10 แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ›แƒแƒกแƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒšแƒแƒ“. แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒ˜: "แƒ—แƒ•แƒ˜แƒ—แƒ›แƒคแƒ แƒ˜แƒœแƒแƒ•แƒ˜", "แƒ›แƒแƒœแƒฅแƒแƒœแƒ", "แƒฉแƒ˜แƒขแƒ˜", "แƒ™แƒแƒขแƒ", "แƒ˜แƒ แƒ”แƒ›แƒ˜", "แƒซแƒแƒฆแƒšแƒ˜", "แƒ‘แƒแƒงแƒแƒงแƒ˜", "แƒชแƒฎแƒ”แƒœแƒ˜", "แƒ’แƒ”แƒ›แƒ˜", "แƒกแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ แƒ›แƒแƒœแƒฅแƒแƒœแƒ". CIFAR10-แƒจแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒก 3x32x32, แƒแƒœแƒฃ 3-แƒแƒ แƒฎแƒ˜แƒแƒœแƒ˜ แƒคแƒ”แƒ แƒแƒ“แƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜ 32x32 แƒžแƒ˜แƒฅแƒกแƒ”แƒšแƒ˜แƒ—.

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” (GPU). แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜
แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ“ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— PyTorch-แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒš แƒžแƒแƒ™แƒ”แƒขแƒก แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก - แƒฉแƒ˜แƒ แƒแƒฆแƒ“แƒœแƒ˜แƒก แƒฎแƒ”แƒ“แƒ•แƒ.

แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒก แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒ—:

  • แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒ“แƒ แƒœแƒแƒ แƒ›แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ
  • แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ
  • แƒฅแƒกแƒ”แƒšแƒฃแƒ แƒ˜ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ–แƒ”
  • แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ–แƒ”
  • แƒ’แƒแƒ•แƒ˜แƒ›แƒ”แƒแƒ แƒแƒ— แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ GPU-แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ— แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒš แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒ“แƒก Jupyter Notebook-แƒจแƒ˜.

CIFAR10 แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒ“แƒ แƒœแƒแƒ แƒ›แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ

แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ— แƒ“แƒ แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ™แƒแƒ“แƒ˜ Jupyter-แƒจแƒ˜:


import torch
import torchvision
import torchvision.transforms as transforms

transform = transforms.Compose(
    [transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
                                          shuffle=True, num_workers=2)

testset = torchvision.datasets.CIFAR10(root='./data', train=False,
                                       download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=4,
                                         shuffle=False, num_workers=2)

classes = ('plane', 'car', 'bird', 'cat',
           'deer', 'dog', 'frog', 'horse', 'ship', 'truck')

แƒžแƒแƒกแƒฃแƒฎแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก:

Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./data/cifar-10-python.tar.gz
Extracting ./data/cifar-10-python.tar.gz to ./data
Files already downloaded and verified

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒ•แƒแƒ•แƒšแƒ˜แƒœแƒแƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒกแƒแƒกแƒฌแƒแƒ•แƒšแƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:


import matplotlib.pyplot as plt
import numpy as np

# functions to show an image

def imshow(img):
    img = img / 2 + 0.5     # unnormalize
    npimg = img.numpy()
    plt.imshow(np.transpose(npimg, (1, 2, 0)))
    plt.show()

# get some random training images
dataiter = iter(trainloader)
images, labels = dataiter.next()

# show images
imshow(torchvision.utils.make_grid(images))
# print labels
print(' '.join('%5s' % classes[labels[j]] for j in range(4)))

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” (GPU). แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜

แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ

แƒฏแƒ”แƒ  แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒแƒ›แƒแƒชแƒœแƒแƒ‘แƒ˜แƒก แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒ“แƒแƒœ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒแƒ›แƒ“แƒ” แƒฅแƒกแƒ”แƒšแƒ˜. แƒ˜แƒก แƒ˜แƒฆแƒ”แƒ‘แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก, แƒ’แƒแƒ“แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒคแƒ”แƒœแƒแƒจแƒ˜ แƒกแƒแƒ—แƒ˜แƒ—แƒแƒแƒ“ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“ แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก.

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” (GPU). แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜

แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒฉแƒ•แƒ”แƒœแƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜:


import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(3, 6, 5)
        self.pool = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(6, 16, 5)
        self.fc1 = nn.Linear(16 * 5 * 5, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = x.view(-1, 16 * 5 * 5)
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x

net = Net()

แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒœแƒ•แƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒ— แƒ“แƒแƒ™แƒแƒ แƒ’แƒ•แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก แƒ“แƒ แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒขแƒแƒ แƒก


import torch.optim as optim

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

แƒฅแƒกแƒ”แƒšแƒฃแƒ แƒ˜ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ–แƒ”

แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ˜. แƒ’แƒ—แƒฎแƒแƒ•แƒ—, แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒ—, แƒ แƒแƒ› แƒแƒ› แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒšแƒแƒ“แƒ˜แƒœแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ›แƒ“แƒ”. 5 แƒฌแƒฃแƒ—แƒ˜ แƒ“แƒแƒ›แƒญแƒ˜แƒ แƒ“แƒ. แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ.

 for epoch in range(2):  # loop over the dataset multiple times

    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        # get the inputs; data is a list of [inputs, labels]
        inputs, labels = data

        # zero the parameter gradients
        optimizer.zero_grad()

        # forward + backward + optimize
        outputs = net(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

        # print statistics
        running_loss += loss.item()
        if i % 2000 == 1999:    # print every 2000 mini-batches
            print('[%d, %5d] loss: %.3f' %
                  (epoch + 1, i + 1, running_loss / 2000))
            running_loss = 0.0

print('Finished Training')

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ“แƒ”แƒ’แƒก:

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” (GPU). แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒ’แƒแƒฌแƒ•แƒ แƒ—แƒœแƒ˜แƒš แƒ›แƒแƒ“แƒ”แƒšแƒก:

PATH = './cifar_net.pth'
torch.save(net.state_dict(), PATH)

แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ–แƒ”

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ”แƒ— แƒฅแƒกแƒ”แƒšแƒ˜ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒแƒ›แƒแƒฌแƒ›แƒแƒ—, แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ แƒ—แƒฃ แƒแƒ แƒ แƒฅแƒกแƒ”แƒšแƒ›แƒ แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒ แƒแƒ›แƒ”.

แƒฉแƒ•แƒ”แƒœ แƒแƒ›แƒแƒก แƒจแƒ”แƒ•แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ— แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ”แƒขแƒ˜แƒ™แƒ”แƒขแƒ˜แƒก แƒžแƒ แƒแƒ’แƒœแƒแƒ–แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ’แƒแƒ›แƒแƒกแƒชแƒ”แƒ›แƒก แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ“แƒ แƒจแƒ”แƒ•แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ—, แƒ—แƒฃ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒแƒ“ แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒ แƒ”แƒก แƒกแƒ˜แƒ›แƒแƒ แƒ—แƒšแƒ”แƒก. แƒ—แƒฃ แƒžแƒ แƒแƒ’แƒœแƒแƒ–แƒ˜ แƒกแƒฌแƒแƒ แƒ˜แƒ, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒœแƒ˜แƒ›แƒฃแƒจแƒก แƒกแƒฌแƒแƒ แƒ˜ แƒžแƒ แƒแƒ’แƒœแƒแƒ–แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒแƒจแƒ˜.
แƒ›แƒแƒ“แƒ˜แƒ— แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒแƒ— แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ:

dataiter = iter(testloader)
images, labels = dataiter.next()

# print images
imshow(torchvision.utils.make_grid(images))
print('GroundTruth: ', ' '.join('%5s' % classes[labels[j]] for j in range(4)))

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” (GPU). แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜

แƒแƒฎแƒšแƒ แƒ•แƒ—แƒฎแƒแƒ•แƒแƒ— แƒœแƒ”แƒ แƒ•แƒฃแƒš แƒฅแƒกแƒ”แƒšแƒก แƒ’แƒ•แƒ˜แƒ—แƒฎแƒ แƒแƒก แƒ แƒ แƒแƒ แƒ˜แƒก แƒแƒ› แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒจแƒ˜:


net = Net()
net.load_state_dict(torch.load(PATH))

outputs = net(images)

_, predicted = torch.max(outputs, 1)

print('Predicted: ', ' '.join('%5s' % classes[predicted[j]]
                              for j in range(4)))

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” (GPU). แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜

แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ™แƒแƒ แƒ’แƒ˜ แƒฉแƒแƒœแƒก: แƒฅแƒกแƒ”แƒšแƒ›แƒ แƒกแƒฌแƒแƒ แƒแƒ“ แƒแƒ›แƒแƒ˜แƒชแƒœแƒ แƒแƒ—แƒฎแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒ“แƒแƒœ แƒกแƒแƒ›แƒ˜.

แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒฅแƒกแƒ”แƒšแƒ˜ แƒ›แƒ—แƒ”แƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜.


correct = 0
total = 0
with torch.no_grad():
    for data in testloader:
        images, labels = data
        outputs = net(images)
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

print('Accuracy of the network on the 10000 test images: %d %%' % (
    100 * correct / total))

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” (GPU). แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜

แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒฅแƒกแƒ”แƒšแƒ›แƒ แƒ แƒแƒฆแƒแƒช แƒ˜แƒชแƒ˜แƒก แƒ“แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก. แƒ—แƒฃ แƒ›แƒแƒœ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ— แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒ แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒ˜, แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ” แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ 10%.

แƒแƒฎแƒšแƒ แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒ›แƒ”แƒš แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒก แƒฃแƒ™แƒ”แƒ— แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒก แƒฅแƒกแƒ”แƒšแƒ˜:

class_correct = list(0. for i in range(10))
class_total = list(0. for i in range(10))
with torch.no_grad():
    for data in testloader:
        images, labels = data
        outputs = net(images)
        _, predicted = torch.max(outputs, 1)
        c = (predicted == labels).squeeze()
        for i in range(4):
            label = labels[i]
            class_correct[label] += c[i].item()
            class_total[label] += 1


for i in range(10):
    print('Accuracy of %5s : %2d %%' % (
        classes[i], 100 * class_correct[i] / class_total[i]))

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” (GPU). แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜

แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒฅแƒกแƒ”แƒšแƒ˜ แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒแƒ แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก: 71% แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ”.

แƒแƒกแƒ” แƒ แƒแƒ›, แƒฅแƒกแƒ”แƒšแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก. แƒแƒฎแƒšแƒ แƒ•แƒชแƒแƒ“แƒแƒ— แƒ›แƒ˜แƒกแƒ˜ แƒœแƒแƒ›แƒฃแƒจแƒ”แƒ•แƒแƒ แƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒš แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ–แƒ” (GPU) แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒขแƒแƒœแƒแƒ— แƒ“แƒ แƒ•แƒœแƒแƒฎแƒแƒ— แƒ แƒ แƒจแƒ”แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ.

แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ‘แƒ GPU-แƒ–แƒ”

แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒ›แƒแƒ™แƒšแƒ”แƒ“ แƒแƒ’แƒ˜แƒฎแƒกแƒœแƒ˜แƒ— แƒ แƒ แƒแƒ แƒ˜แƒก CUDA. CUDA (Compute Unified Device Architecture) แƒแƒ แƒ˜แƒก แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒ—แƒ˜ แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ NVIDIA-แƒก แƒ›แƒ˜แƒ”แƒ  แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ”แƒ‘แƒ–แƒ” (GPU) แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. CUDA-แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ™แƒ•แƒ”แƒ—แƒ แƒแƒ“ แƒ“แƒแƒแƒฉแƒฅแƒแƒ แƒแƒœ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒ—แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ GPU-แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ›แƒซแƒšแƒแƒ•แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ”แƒก แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ แƒฃแƒ™แƒ•แƒ” แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฉแƒ•แƒ”แƒœแƒก แƒ›แƒ˜แƒ”แƒ  แƒจแƒ”แƒซแƒ”แƒœแƒ˜แƒš แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”.

แƒ›แƒแƒ“แƒ˜แƒ— แƒฏแƒ”แƒ  แƒ’แƒแƒœแƒ•แƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ GPU, แƒ แƒแƒ’แƒแƒ แƒช แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒฎแƒ˜แƒšแƒฃแƒšแƒ˜ cuda แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ.

device = torch . device ( "cuda:0" if torch . cuda . is_available () else "cpu" )
# Assuming that we are on a CUDA machine, this should print a CUDA device:
print ( device )

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” (GPU). แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒแƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜

แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ GPU-แƒ–แƒ”:

net.to(device)

แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒแƒ’แƒ•แƒ˜แƒฌแƒ”แƒ•แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ“แƒ แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ–แƒ” GPU-แƒ–แƒ”:

inputs, labels = data[0].to(device), data[1].to(device)

แƒ›แƒแƒ“แƒ˜แƒ— แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ•แƒแƒ•แƒแƒ แƒฏแƒ˜แƒจแƒแƒ— แƒฅแƒกแƒ”แƒšแƒ˜ GPU-แƒ–แƒ”:

import torch.optim as optim

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
for epoch in range(2):  # loop over the dataset multiple times

    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        # get the inputs; data is a list of [inputs, labels]
    inputs, labels = data[0].to(device), data[1].to(device)

        # zero the parameter gradients
        optimizer.zero_grad()

        # forward + backward + optimize
        outputs = net(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

        # print statistics
        running_loss += loss.item()
        if i % 2000 == 1999:    # print every 2000 mini-batches
            print('[%d, %5d] loss: %.3f' %
                  (epoch + 1, i + 1, running_loss / 2000))
            running_loss = 0.0

print('Finished Training')

แƒแƒ›แƒฏแƒ”แƒ แƒแƒ“ แƒฅแƒกแƒ”แƒšแƒฃแƒ แƒ˜ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 3 แƒฌแƒฃแƒ—แƒ˜ แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ“แƒ. แƒจแƒ”แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ—, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ–แƒ” แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ”แƒขแƒแƒžแƒ˜ 5 แƒฌแƒฃแƒ—แƒก แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ“แƒ. แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜, แƒ”แƒก แƒ˜แƒ›แƒ˜แƒขแƒแƒ› แƒฎแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒแƒ แƒช แƒ—แƒฃ แƒ˜แƒกแƒ” แƒ“แƒ˜แƒ“แƒ˜แƒ. แƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒ›แƒแƒกแƒ˜แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒ’แƒแƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒแƒแƒ‘แƒ GPU-แƒกแƒ แƒ“แƒ แƒขแƒ แƒแƒ“แƒ˜แƒชแƒ˜แƒฃแƒš แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒก แƒจแƒแƒ แƒ˜แƒก.

แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜แƒ. แƒ แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒ•แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ—:

  • แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒ”แƒ— แƒ แƒ แƒแƒ แƒ˜แƒก GPU แƒ“แƒ แƒจแƒ”แƒ•แƒแƒ แƒฉแƒ˜แƒ”แƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜;
  • แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒ’แƒแƒ แƒ”แƒ›แƒ แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“;
  • แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒแƒ›แƒแƒชแƒœแƒแƒ‘แƒ˜แƒก แƒœแƒ”แƒ แƒ•แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ“แƒ แƒ•แƒแƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ”แƒ— แƒ˜แƒ’แƒ˜;
  • แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒ˜แƒ›แƒ”แƒแƒ แƒ”แƒ— แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜ GPU-แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ— แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒก แƒ–แƒ แƒ“แƒ.

แƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ•แƒฃแƒžแƒแƒกแƒฃแƒฎแƒ”แƒ‘ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒก แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒจแƒ˜.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ