เด’เดฐเต เด—เตเดฐเดพเดซเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเดฒเต† (GPU) เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดฆเตเดฏเดคเตเดคเต† เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต. เดคเตเดŸเด•เตเด•เด•เตเด•เดพเดฐเดจเตเดฑเต† เด—เตˆเดกเต

เด’เดฐเต เด—เตเดฐเดพเดซเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเดฒเต† (GPU) เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดฆเตเดฏเดคเตเดคเต† เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต. เดคเตเดŸเด•เตเด•เด•เตเด•เดพเดฐเดจเตเดฑเต† เด—เตˆเดกเต
เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, 30 เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เด’เดฐเต เดฎเต†เดทเต€เตป เดฒเต‡เดฃเดฟเด‚เด—เต เดŽเตปเดตเดฏเต‹เตบเดฎเต†เตปเตเดฑเต เดŽเด™เตเด™เดจเต† เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด‡เดฎเต‡เดœเต เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดฒเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดคเตเดŸเตผเดจเตเดจเต เด—เตเดฐเดพเดซเดฟเด•เตเดธเต เดชเตเดฐเต‹เดธเดธเดฑเดฟเตฝ (เดœเดฟเดชเดฟเดฏเต) เด…เดคเต‡ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดžเดพเตป เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดชเดฑเดฏเตเด‚.

เด†เดฆเตเดฏเด‚, เด’เดฐเต เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดจเดฟเตผเดตเดšเดฟเด•เตเด•เดพเด‚.

เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด‡เดคเต เด’เดฐเต เด—เดฃเดฟเดคเดถเดพเดธเตเดคเตเดฐ เดฎเต‹เดกเดฒเดพเดฃเต, เด…เดคเตเดชเต‹เดฒเต† เดคเดจเตเดจเต† เด…เดคเดฟเตปเตเดฑเต† เดธเต‹เดซเตเดฑเตเดฑเตเดตเต†เดฏเตผ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดนเดพเตผเดกเตโ€Œเดตเต†เดฏเตผ เด†เตพเดฐเต‚เดชเดฎเดพเดฃเต, เดฌเดฏเต‹เดณเดœเดฟเด•เตเด•เตฝ เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด•เดณเตเดŸเต† เด“เตผเด—เดจเตˆเดธเต‡เดทเตปเตเดฑเต†เดฏเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตปเตเดฑเต†เดฏเตเด‚ เดคเดคเตเดตเดคเตเดคเดฟเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดšเดคเดพเดฃเต - เด’เดฐเต เดœเต€เดตเดฟเดฏเตเดŸเต† เดจเดพเดกเต€เด•เต‹เดถเด™เตเด™เดณเตเดŸเต† เดถเตƒเด‚เด–เดฒเด•เตพ. เดฎเดธเตเดคเดฟเดทเตเด•เดคเตเดคเดฟเตฝ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ เดชเด เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดˆ เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เดณเต† เดฎเดพเดคเตƒเด•เดฏเดพเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดˆ เด†เดถเดฏเด‚ เด‰เดŸเดฒเต†เดŸเตเดคเตเดคเต.

เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด•เตพ เดˆ เดตเดพเด•เตเด•เดฟเตปเตเดฑเต† เดธเดพเดงเดพเดฐเดฃ เด…เตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒ, เด…เดต เดชเดฐเดฟเดถเต€เดฒเดฟเดชเตเดชเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต. เดชเดฐเดฎเตเดชเดฐเดพเด—เดค เด…เตฝเด—เต‹เดฐเดฟเดคเด™เตเด™เดณเต‡เด•เตเด•เดพเตพ เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด•เดณเตเดŸเต† เดชเตเดฐเดงเดพเดจ เดจเต‡เดŸเตเดŸเด™เตเด™เดณเดฟเดฒเตŠเดจเตเดจเดพเดฃเต เดชเด เดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต. เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดฎเดพเดฏเดฟ, เดจเตเดฏเต‚เดฑเต‹เดฃเตเด•เตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดฌเดจเตเดงเด™เตเด™เดณเตเดŸเต† เด—เตเดฃเด•เด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเดพเดฃเต เดชเด เดจเด‚. เดชเดฐเดฟเดถเต€เดฒเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ, เด‡เตปเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑเดฏเตเด‚ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑเดฏเตเด‚ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดพเดจเตเด‚ เด…เดคเตเดชเต‹เดฒเต† เดธเดพเดฎเดพเดจเตเดฏเดตเตฝเด•เตเด•เดฐเดฃเด‚ เดจเดŸเดคเตเดคเดพเดจเตเด‚ เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดจเต เด•เดดเดฟเดฏเตเด‚.

เดฎเต†เดทเต€เตป เดฒเต‡เดฃเดฟเด‚เด—เดฟเตปเตเดฑเต† เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ, เดชเดพเดฑเตเดฑเต‡เตบ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเตฝ เดฐเต€เดคเดฟเด•เตพ, เดตเดฟเดตเต‡เดšเดจเดชเดฐเดฎเดพเดฏ เดตเดฟเดถเด•เดฒเดจเด‚, เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเด‚เด—เต เดฐเต€เดคเดฟเด•เตพ, เดฎเดฑเตเดฑเต เดฐเต€เดคเดฟเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดธเดพเดนเดšเดฐเตเดฏเดฎเดพเดฃเต เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต.

เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ

เด†เดฆเตเดฏเด‚, เดจเดฎเตเด•เตเด•เต เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เดจเต‹เด•เตเด•เดพเด‚. เดฒเดฟเดจเด•เตเดธเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค เด’เดฐเต เดธเต†เตผเดตเตผ เดžเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดฎเต†เดทเต€เตป เดฒเต‡เดฃเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เดตเดณเดฐเต† เดถเด•เตเดคเดตเตเด‚ เด…เดคเดฟเตปเตเดฑเต† เดซเดฒเดฎเดพเดฏเดฟ เดšเต†เดฒเดตเต‡เดฑเดฟเดฏเดคเตเดฎเดพเดฃเต. เด•เดฏเตเดฏเดฟเตฝ เดจเดฒเตเดฒ เดฎเต†เดทเต€เตป เด‡เดฒเตเดฒเดพเดคเตเดคเดตเตผเด•เตเด•เต, เด•เตเดฒเต—เดกเต เดฆเดพเดคเดพเด•เตเด•เดณเตเดŸเต† เด“เดซเดฑเตเด•เตพ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เดพเตป เดžเดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดธเต†เตผเดตเตผ เดตเต‡เด—เดคเตเดคเดฟเตฝ เดตเดพเดŸเด•เดฏเตโ€Œเด•เตเด•เต†เดŸเตเด•เตเด•เดพเดจเตเด‚ เด‰เดชเดฏเต‹เด— เดธเดฎเดฏเดคเตเดคเดฟเดจเต เดฎเดพเดคเตเดฐเด‚ เดชเดฃเด‚ เดจเตฝเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚.

เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด†เดตเดถเตเดฏเดฎเดพเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เดณเดฟเตฝ, เดžเดพเตป เดฑเดทเตเดฏเตป เด•เตเดฒเต—เดกเต เดฆเดพเดคเดพเด•เตเด•เดณเดฟเตฝ เด’เดฐเดพเดณเตเดŸเต† เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดŽเตปเดตเดฟเดกเดฟเดฏเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดถเด•เตเดคเดฎเดพเดฏ เดŸเต†เดธเตโ€Œเดฒ เดตเดฟ100 เด—เตเดฐเดพเดซเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเดฑเตเด•เตพ (เดœเดฟเดชเดฟเดฏเต) เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเต†เดทเต€เตป เดฒเต‡เดฃเดฟเด‚เด—เดฟเดจเดพเดฏเดฟ เดชเตเดฐเดคเตเดฏเต‡เด•เดฎเดพเดฏเดฟ เด•เตเดฒเต—เดกเต เดธเต†เตผเดตเดฑเตเด•เตพ เดตเดพเดŸเด•เดฏเตโ€Œเด•เตเด•เต เด•เดฎเตเดชเดจเดฟ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดšเตเดฐเตเด•เตเด•เดคเตเดคเดฟเตฝ: เด•เดฃเด•เตเด•เตเด•เต‚เดŸเตเดŸเดฒเตเด•เตพเด•เตเด•เดพเดฏเดฟ CPU (เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เดธเต†เตปเดŸเตเดฐเตฝ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดฏเต‚เดฃเดฟเดฑเตเดฑเต) เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดธเดฎเดพเดจ เดตเดฟเดฒเดฏเตเดณเตเดณ เดธเต†เตผเดตเดฑเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดฎเตเดชเต‹เตพ GPU เด‰เดณเตเดณ เด’เดฐเต เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเดคเตเดคเดฟเดฐเดŸเตเดŸเดฟ เด•เต‚เดŸเตเดคเตฝ เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ (เดตเต‡เด—เดค). เดœเดฟเดชเดฟเดฏเต เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเดฑเดฟเตปเตเดฑเต† เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เด•เดพเดฐเดฃเด‚ เด‡เดคเต เด•เตˆเดตเดฐเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚, เด‡เดคเต เด•เดฃเด•เตเด•เตเด•เต‚เดŸเตเดŸเดฒเตเด•เดณเต† เดตเต‡เด—เดคเตเดคเดฟเตฝ เดจเต‡เดฐเดฟเดŸเตเดจเตเดจเต.

เดšเตเดตเดŸเต† เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป, เดžเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดธเต†เตผเดตเตผ เดจเดฟเดฐเดตเดงเดฟ เดฆเดฟเดตเดธเดคเตเดคเต‡เด•เตเด•เต เดตเดพเด™เตเด™เดฟ:

  • เดŽเดธเตเดŽเดธเตเดกเดฟ เดกเดฟเดธเตเด•เต 150 เดœเดฟเดฌเดฟ
  • เดฑเดพเด‚ 32 เดœเดฟเดฌเดฟ
  • เดŸเต†เดธเตโ€Œเดฒ เดตเดฟ100 16 เดœเดฟเดฌเดฟ เดชเตเดฐเตŠเดธเดธเตผ, 4 เด•เต‹เดฑเตเด•เตพ

เดžเด™เตเด™เดณเตเดŸเต† เดฎเต†เดทเต€เดจเดฟเตฝ เดžเด™เตเด™เตพ เด‰เดฌเตเดฃเตเดŸเต 18.04 เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเต.

เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เด‡เดชเตเดชเต‹เตพ เดธเต†เตผเดตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเด‚. เดžเด™เตเด™เดณเตเดŸเต† เดฒเต‡เด–เดจเด‚ เดชเตเดฐเดพเดฅเดฎเดฟเด•เดฎเดพเดฏเดฟ เดคเตเดŸเด•เตเด•เด•เตเด•เดพเตผเด•เตเด•เตเดณเตเดณเดคเดฟเดจเดพเตฝ, เด…เดตเตผเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเดจเตเดจ เดšเดฟเดฒ เดชเต‹เดฏเดฟเตปเตเดฑเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเดพเตป เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚.

เด’เดฐเต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดงเดพเดฐเดพเดณเด‚ เดœเต‹เดฒเดฟเด•เตพ เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เดตเดดเดฟเดฏเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต. เดฎเดฟเด•เตเด• เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเด‚ เด…เดตเดฐเตเดŸเต† เดตเตผเด•เตเด•เดฟเด‚เด—เต เด’เดŽเดธเต เด†เดฏเดฟ เดตเดฟเตปเดกเต‹เดธเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดˆ OS-เดฒเต† เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เด•เตบเดธเต‹เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดคเต เดเดฑเต†เดฏเดพเดฃเต. เด…เดคเดฟเดจเดพเตฝ, เดžเด™เตเด™เตพ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เด’เดฐเต เด‰เดชเด•เดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚ Cmder/. เดฎเดฟเดจเดฟ เดชเดคเดฟเดชเตเดชเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดคเต Cmder.exe เดฑเตบ เดšเต†เดฏเตเดฏเตเด•. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพ SSH เดตเดดเดฟ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

ssh root@server-ip-or-hostname

เดธเต†เตผเดตเตผ-ip-or-hostname-เดจเต เดชเด•เดฐเด‚, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเต†เตผเดตเดฑเดฟเตปเตเดฑเต† IP เดตเดฟเดฒเดพเดธเดฎเต‹ DNS เดชเต‡เดฐเต‹ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด•. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดจเตฝเด•เตเด•, เด•เดฃเด•เตเดทเตป เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดฐเต เดธเดจเตเดฆเต‡เดถเด‚ เดจเดฎเตเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚.

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

ML เดฎเต‹เดกเดฒเตเด•เตพ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดงเดพเดจ เดญเดพเดท เดชเตˆเดคเตเดคเตบ เด†เดฃเต. เดฒเดฟเดจเด•เตเดธเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดœเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏ เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เด‚ เด…เดจเด•เตเด•เต‡เดพเดฃเตเดŸ.

เดจเดฎเตเด•เตเด•เต เด‡เดคเต เดจเดฎเตเดฎเตเดŸเต† เดธเต†เตผเดตเดฑเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเด‚.

เดฒเต‹เด•เตเด•เตฝ เดชเดพเด•เตเด•เต‡เดœเต เดฎเดพเดจเต‡เดœเตผ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดžเด™เตเด™เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต:

sudo apt-get update

curl เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• (เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ):

sudo apt-get install curl

เด…เดจเด•เตเด•เต‹เดฃเตเดŸ เดกเดฟเดธเตเดŸเตเดฐเดฟเดฌเตเดฏเต‚เดทเตปเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•:

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

ML เดธเตเดชเต†เดทเตเดฏเดฒเดฟเดธเตเดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเตเดณเตเดณ เดœเดจเดชเตเดฐเดฟเดฏ เดตเดฟเด•เดธเดจ เด‰เดชเด•เดฐเดฃเดฎเดพเดฏ เดœเต‚เดชเตเดชเดฟเดฑเตเดฑเตผ เดจเต‹เดŸเตเดŸเตเดฌเตเด•เตเด•เต เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด•เต‹เดกเต เดŽเดดเตเดคเดพเดจเตเด‚ เด…เดคเดฟเตปเตเดฑเต† เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเตปเตเดฑเต† เดซเดฒเด™เตเด™เตพ เด‰เดŸเดจเดŸเดฟ เด•เดพเดฃเดพเดจเตเด‚ เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดœเต‚เดชเตเดชเดฟเดฑเตเดฑเตผ เดจเต‹เดŸเตเดŸเตเดฌเตเด•เตเด•เต เด…เดจเด•เตเด•เต‹เดฃเตเดŸเดฏเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เดžเด™เตเด™เดณเตเดŸเต† เดธเต†เตผเดตเดฑเดฟเตฝ เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เดžเด™เตเด™เดณเตเดŸเต† เดกเต†เดธเตเด•เตเดŸเต‹เดชเตเดชเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด‡เดคเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดชเต‹เตผเดŸเตเดŸเต 8080 เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจ เดธเต†เตผเดตเดฑเดฟเตฝ เดžเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เดœเต‚เดชเตเดชเดฟเดฑเตเดฑเตผ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด‚:

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

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดžเด™เตเด™เดณเตเดŸเต† Cmder เด•เตบเดธเต‹เดณเดฟเตฝ เดฎเดฑเตเดฑเตŠเดฐเต เดŸเดพเดฌเต เดคเตเดฑเด•เตเด•เตเดจเตเดจเต (เดŸเต‹เดชเตเดชเต เดฎเต†เดจเต - เดชเตเดคเดฟเดฏ เด•เตบเดธเต‹เตพ เดกเดฏเดฒเต‹เด—เต) เดžเด™เตเด™เตพ เดชเต‹เตผเดŸเตเดŸเต 8080 เดตเดดเดฟ SSH เดตเดดเดฟ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚:

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

เดžเด™เตเด™เตพ เด†เดฆเตเดฏเดคเตเดคเต† เด•เดฎเดพเตปเดกเต เดจเตฝเด•เตเดฎเตเดชเต‹เตพ, เดžเด™เตเด™เดณเตเดŸเต† เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เดœเต‚เดชเตเดชเดฟเดฑเตเดฑเตผ เดคเตเดฑเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เตพ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเด‚:

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

เดฒเต‹เด•เตเด•เตฝเดนเต‹เดธเตเดฑเตเดฑเต:8080 เดŽเดจเตเดจเดคเดฟเดจเดพเดฏเตเดณเตเดณ เดฒเดฟเด™เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เดฎเตเดดเตเดตเตป เดชเดพเดคเดฏเตเด‚ เดชเด•เตผเดคเตเดคเดฟ เดจเดฟเด™เตเด™เดณเตเดŸเต† PC-เดฏเตเดŸเต† เดฒเต‹เด•เตเด•เตฝ เดฌเตเดฐเต—เดธเดฑเดฟเตปเตเดฑเต† เดตเดฟเดฒเดพเดธ เดฌเดพเดฑเดฟเตฝ เด’เดŸเตเดŸเดฟเด•เตเด•เตเด•. เดœเต‚เดชเตเดชเดฟเดฑเตเดฑเตผ เดจเต‹เดŸเตเดŸเตเดฌเตเด•เตเด•เต เดคเตเดฑเด•เตเด•เตเด‚.

เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดชเตเดคเดฟเดฏ เดจเต‹เดŸเตเดŸเตเดฌเตเด•เตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚: เดชเตเดคเดฟเดฏเดคเต - เดจเต‹เดŸเตเดŸเตเดฌเตเด•เตเด•เต - เดชเตˆเดคเตเดคเตบ 3.

เดžเด™เตเด™เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค เดŽเดฒเตเดฒเดพ เด˜เดŸเด•เด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดถเดฐเดฟเดฏเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚. เดจเดฎเตเด•เตเด•เต เดœเต‚เดชเตเดชเดฟเดฑเตเดฑเดฑเดฟเตฝ PyTorch เด•เต‹เดกเดฟเตปเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ เดจเตฝเด•เดฟ, เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚ (เดฑเตบ เดฌเดŸเตเดŸเตบ):

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

เดซเดฒเด‚ เด‡เดคเตเดชเต‹เดฒเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚:

เด’เดฐเต เด—เตเดฐเดพเดซเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเดฒเต† (GPU) เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดฆเตเดฏเดคเตเดคเต† เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต. เดคเตเดŸเด•เตเด•เด•เตเด•เดพเดฐเดจเตเดฑเต† เด—เตˆเดกเต

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเดฎเดพเดจเดฎเดพเดฏ เดซเดฒเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดžเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเดฏเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเต, เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚!

เด’เดฐเต เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เด‡เดฎเต‡เดœเต เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เด’เดฐเต เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚. เดจเดฎเตเด•เตเด•เต เด‡เดคเต เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เดพเด‚ เดจเต‡เดคเตƒเดคเตเดตเด‚.

เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดจเต† เดชเดฐเดฟเดถเต€เดฒเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดชเตŠเดคเตเดตเดพเดฏเดฟ เดฒเดญเตเดฏเดฎเดพเดฏ CIFAR10 เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚. เด‡เดคเดฟเดจเต เด•เตเดฒเดพเดธเตเด•เดณเตเดฃเตเดŸเต: "เดตเดฟเดฎเดพเดจเด‚", "เด•เดพเตผ", "เดชเด•เตเดทเดฟ", "เดชเต‚เดšเตเดš", "เดฎเดพเตป", "เดจเดพเดฏ", "เดคเดตเดณ", "เด•เตเดคเดฟเดฐ", "เด•เดชเตเดชเตฝ", "เดŸเตเดฐเด•เตเด•เต". CIFAR10-เดฒเต† เดšเดฟเดคเตเดฐเด™เตเด™เตพ 3x32x32 เด†เดฃเต, เด…เดคเดพเดฏเดคเต 3x32 เดชเดฟเด•เตเดธเดฒเดฟเตปเตเดฑเต† 32-เดšเดพเดจเตฝ เด•เดณเตผ เด‡เดฎเต‡เดœเตเด•เตพ.

เด’เดฐเต เด—เตเดฐเดพเดซเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเดฒเต† (GPU) เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดฆเตเดฏเดคเตเดคเต† เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต. เดคเตเดŸเด•เตเด•เด•เตเด•เดพเดฐเดจเตเดฑเต† เด—เตˆเดกเต
เดœเต‹เดฒเดฟเด•เตเด•เดพเดฏเดฟ, เดšเดฟเดคเตเดฐเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป PyTorch เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดชเดพเด•เตเด•เต‡เดœเต เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚ - เดŸเต‹เตผเดšเตเดšเตเดตเดฟเดทเตป.

เดžเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด˜เดŸเตเดŸเด™เตเด™เตพ เด•เตเดฐเดฎเดคเตเดคเดฟเตฝ เดšเต†เดฏเตเดฏเตเด‚:

  • เดชเดฐเดฟเดถเต€เดฒเดจเดตเตเด‚ เดŸเต†เดธเตเดฑเตเดฑเต เดกเดพเดฑเตเดฑเดพ เดธเต†เดฑเตเดฑเตเด•เดณเตเด‚ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดธเดพเดงเดพเดฐเดฃเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต
  • เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดจเดฟเตผเดตเตเดตเดšเดจเด‚
  • เดชเดฐเดฟเดถเต€เดฒเดจ เดกเดพเดฑเตเดฑเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดชเดฐเดฟเดถเต€เดฒเดจเด‚
  • เดŸเต†เดธเตเดฑเตเดฑเต เดกเดพเดฑเตเดฑเดฏเดฟเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต
  • เดœเดฟเดชเดฟเดฏเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเดฐเดฟเดถเต€เดฒเดจเดตเตเด‚ เดชเดฐเดฟเดถเต‹เดงเดจเดฏเตเด‚ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เดพเด‚

เดคเดพเดดเต†เดฏเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เด•เต‹เดกเตเด•เดณเตเด‚ เดžเด™เตเด™เตพ เดœเต‚เดชเตเดชเดฟเดฑเตเดฑเตผ เดจเต‹เดŸเตเดŸเตเดฌเตเด•เตเด•เดฟเตฝ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด‚.

CIFAR10 เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดธเดพเดงเดพเดฐเดฃเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดœเต‚เดชเตเดชเดฟเดฑเตเดฑเดฑเดฟเตฝ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เต‹เดกเต เดชเด•เตผเดคเตเดคเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•:


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% เด•เตƒเดคเตเดฏเดค.

เด…เดคเดฟเดจเดพเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เด…เดคเดฟเตปเตเดฑเต† เดœเต‹เดฒเดฟ เด—เตเดฐเดพเดซเดฟเด•เตเดธเต เดชเตเดฐเต‹เดธเดธเดฑเดฟเดฒเต‡เด•เตเด•เต (เดœเดฟเดชเดฟเดฏเต) เด•เตˆเดฎเดพเดฑเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚, เดŽเดจเตเดคเดพเดฃเต เดฎเดพเดฑเตเดฑเดฎเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚.

เดœเดฟเดชเดฟเดฏเตเดตเดฟเตฝ เด’เดฐเต เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดชเดฐเดฟเดถเต€เดฒเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เด†เดฆเตเดฏเด‚, CUDA เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เดšเตเดฐเตเด•เตเด•เดฎเดพเดฏเดฟ เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เตเด‚. เด—เตเดฐเดพเดซเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดฏเต‚เดฃเดฟเดฑเตเดฑเตเด•เดณเดฟเตฝ (เดœเดฟเดชเดฟเดฏเต) เดœเดจเดฑเตฝ เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฟเด‚เด—เดฟเดจเดพเดฏเดฟ เดŽเตปเดตเดฟเดกเดฟเดฏ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดš เดธเดฎเดพเดจเตเดคเดฐ เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฟเด‚เด—เต เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดพเดฃเต CUDA (เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเต เดฏเต‚เดฃเดฟเดซเตˆเดกเต เดกเดฟเดตเตˆเดธเต เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเตผ). CUDA เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เต 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) เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดฆเตเดฏเดคเตเดคเต† เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต. เดคเตเดŸเด•เตเด•เด•เตเด•เดพเดฐเดจเตเดฑเต† เด—เตˆเดกเต

เดœเดฟเดชเดฟเดฏเตเดตเดฟเดฒเต‡เด•เตเด•เต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเต:

net.to(device)

เดœเดฟเดชเดฟเดฏเตเดตเดฟเดฒเต‡เด•เตเด•เต เด“เดฐเต‹ เด˜เดŸเตเดŸเดคเตเดคเดฟเดฒเตเด‚ เดžเด™เตเด™เตพ เด‡เตปเดชเตเดŸเตเดŸเตเด•เดณเตเด‚ เดŸเดพเตผเด—เต†เดฑเตเดฑเตเด•เดณเตเด‚ เด…เดฏเดฏเตโ€Œเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

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

เดจเดฎเตเด•เตเด•เต เดœเดฟเดชเดฟเดฏเตเดตเดฟเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดตเต€เดฃเตเดŸเตเด‚ เดชเดฐเดฟเดถเต€เดฒเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚:

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 เดฎเดฟเดจเดฟเดฑเตเดฑเต เดจเต€เดฃเตเดŸเตเดจเดฟเดจเตเดจเดคเต เดจเดฎเตเด•เตเด•เต เด“เตผเด•เตเด•เดพเด‚. เดตเตเดฏเดคเตเดฏเดพเดธเด‚ เดชเตเดฐเดพเดงเดพเดจเตเดฏเดฎเตผเดนเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เดžเด™เตเด™เดณเตเดŸเต† เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด…เดคเตเดฐ เดตเดฒเตเดคเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเดฒเดพเดฃเต เด‡เดคเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต. เดชเดฐเดฟเดถเต€เดฒเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดตเดฒเดฟเดฏ เด…เดฑเต‡เด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดœเดฟเดชเดฟเดฏเตเดตเตเด‚ เดชเดฐเดฎเตเดชเดฐเดพเด—เดค เดชเตเดฐเตŠเดธเดธเดฑเตเด‚ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดตเตเดฏเดคเตเดฏเดพเดธเด‚ เดตเตผเดฆเตเดงเดฟเด•เตเด•เตเด‚.

เด…เดคเต เดŽเดฒเตเดฒเดพเด‚ เด†เดฃเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต. เดžเด™เตเด™เตพเด•เตเด•เต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดžเตเดžเดคเต:

  • เด’เดฐเต เดœเดฟเดชเดฟเดฏเต เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดจเต‹เด•เตเด•เดฟ, เด…เดคเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค เดธเต†เตผเดตเตผ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต;
  • เด’เดฐเต เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดžเด™เตเด™เตพ เด’เดฐเต เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต;
  • เด‡เดฎเต‡เดœเต เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดฒเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เด’เดฐเต เดจเตเดฏเต‚เดฑเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเต เดชเดฐเดฟเดถเต€เดฒเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต;
  • เดœเดฟเดชเดฟเดฏเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดชเดฐเดฟเดถเต€เดฒเดจเด‚ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเต‡เด—เดคเดฏเดฟเตฝ เดตเตผเดฆเตเดงเดจเดตเต เดฒเดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต.

เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเดฒเต† เดšเต‹เดฆเตเดฏเด™เตเด™เตพเด•เตเด•เต เด‰เดคเตเดคเดฐเด‚ เดจเตฝเด•เตเดจเตเดจเดคเดฟเตฝ เดžเดพเตป เดธเดจเตเดคเตเดทเตเดŸเดจเดพเด•เตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•