PyTorch Tutorial
โก ฮฮพฯ ฯฮฝฮท ฮฃฯฮฝฮฟฯฮท
PyTorฮคฮฟ ch ฮตฮฏฮฝฮฑฮน ฯฮฟ ฯฮปฮฑฮฏฯฮนฮฟ ฮฒฮฑฮธฮนฮฌฯ ฮผฮฌฮธฮทฯฮทฯ ฮฑฮฝฮฟฮนฯฯฮฟฯ ฮบฯฮดฮนฮบฮฑ ฮฑฯฯ ฯฮทฮฝ Meta, ฯฮฟ ฮฟฯฮฟฮฏฮฟ ฯฯฮฟฯฮฟฮดฮฟฯฮตฮฏ ฯฮปฮญฮฟฮฝ ฯฮฟ 85% ฯฯฮฝ ฮตฯฮตฯ ฮฝฮทฯฮนฮบฯฮฝ ฮตฯฮณฮฑฯฮนฯฮฝ ฯฯฮฟฮฝ ฯฮฟฮผฮญฮฑ ฯฮทฯ ฮคฮตฯฮฝฮทฯฮฎฯ ฮฮฟฮทฮผฮฟฯฯฮฝฮทฯ ฯฮฟ 2026. Lessฮคฮฑ ons ฮบฮฑฮปฯฯฯฮฟฯ ฮฝ ฯฮทฮฝ ฮตฮณฮบฮฑฯฮฌฯฯฮฑฯฮท, ฯฮฑ ฮฒฮฑฯฮนฮบฮฌ ฯฮฟฯ framework, ฯฮทฮฝ ฮฑฯฮปฮฎ ฯฮฑฮปฮนฮฝฮดฯฯฮผฮทฯฮท, ฯฮทฮฝ ฯฮฑฮพฮนฮฝฯฮผฮทฯฮท ฮตฮนฮบฯฮฝฯฮฝ ฮบฮฑฮน ฯฮทฮฝ ฮฑฮฝฮฌฯฯฯ ฮพฮท ฯฮฟฯ AWS SageMaker.

ฮคฮน ฮตฮฏฮฝฮฑฮน ฯฮฟ PyTorฮท;
PyTorch ฮตฮฏฮฝฮฑฮน ฮฑฮฝฮฟฮนฯฯฮฟฯ ฮบฯฮดฮนฮบฮฑ Torฮฮนฮฒฮปฮนฮฟฮธฮฎฮบฮท ฮฮทฯฮฑฮฝฮนฮบฮฎฯ ฮฮฌฮธฮทฯฮทฯ ฯฮฟฯ ฮฒฮฑฯฮฏฮถฮตฯฮฑฮน ฯฮต ch ฮณฮนฮฑ ฮตฯฮตฮพฮตฯฮณฮฑฯฮฏฮฑ ฯฯ ฯฮนฮบฮฎฯ ฮณฮปฯฯฯฮฑฯ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฯฮฝฯฮฑฯ Pythonฮฮฏฮฝฮฑฮน ฯฮฑฯฯฮผฮฟฮนฮฟ ฮผฮต ฯฮฟ NumPy ฮฑฮปฮปฮฌ ฮผฮต ฮนฯฯฯ ฯฮฎ ฯ ฯฮฟฯฯฮฎฯฮนฮพฮท GPU. ฮ ฯฮฟฯฯฮญฯฮตฮน ฮฯ ฮฝฮฑฮผฮนฮบฮฌ ฮฅฯฮฟฮปฮฟฮณฮนฯฯฮนฮบฮฌ ฮฯฮฑฯฮฎฮผฮฑฯฮฑ ฯฮฟฯ ฮผฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฯฯฮฟฯฮฟฯฮฟฮนฮฎฯฮตฯฮต ฮตฮฝ ฮบฮนฮฝฮฎฯฮตฮน ฮผฮต ฯฮท ฮฒฮฟฮฎฮธฮตฮนฮฑ ฯฮฟฯ autograd. PyTorฮคฮฟ ch ฮตฮฏฮฝฮฑฮน ฮตฯฮฏฯฮทฯ ฯฮนฮฟ ฮณฯฮฎฮณฮฟฯฮฟ ฮฑฯฯ ฮฟฯฮนฯฮผฮญฮฝฮฑ ฮฌฮปฮปฮฑ frameworks. ฮฮฝฮฑฯฯฯฯฮธฮทฮบฮต ฮฑฯฯ ฯฮทฮฝ ฮฟฮผฮฌฮดฮฑ ฮญฯฮตฯ ฮฝฮฑฯ ฯฮตฯฮฝฮทฯฮฎฯ ฮฝฮฟฮทฮผฮฟฯฯฮฝฮทฯ ฯฮฟฯ Facebook ฯฮฟ 2016.
ฮฮฝฯฯฮฏฮถฮฟฮฝฯฮฑฯ ฯฮน PyTorฮคฮฟ ch ฮดฮฏฮฝฮตฮน ฮผฮนฮฑ ฮนฯฮฟฯฯฮฟฯฮทฮผฮญฮฝฮท ฮผฮฑฯฮนฮฌ ฯฯฮฑ ฮดฯ ฮฝฮฑฯฮฌ ฮบฮฑฮน ฯฮฑ ฮผฮตฮนฮฟฮฝฮตฮบฯฮฎฮผฮฑฯฮฌ ฯฮฟฯ .
PyTorฮ ฮปฮตฮฟฮฝฮตฮบฯฮฎฮผฮฑฯฮฑ ฮบฮฑฮน ฮผฮตฮนฮฟฮฝฮตฮบฯฮฎฮผฮฑฯฮฑ
ฮฮบฮฟฮปฮฟฯ ฮธฮฟฯฮฝ ฯฮฑ ฯฮปฮตฮฟฮฝฮตฮบฯฮฎฮผฮฑฯฮฑ ฮบฮฑฮน ฯฮฑ ฮผฮตฮนฮฟฮฝฮตฮบฯฮฎฮผฮฑฯฮฑ ฯฮฟฯ Py:Torch:
ฮ ฮปฮตฮฟฮฝฮตฮบฯฮฎฮผฮฑฯฮฑ ฯฮฟฯ PyTorch
- ฮฯฮปฮฎ ฮฮนฮฒฮปฮนฮฟฮธฮฎฮบฮท
PyTorฮ ฮบฯฮดฮนฮบฮฑฯ ch ฮตฮฏฮฝฮฑฮน ฮฑฯฮปฯฯ. ฮฮฏฮฝฮฑฮน ฮตฯฮบฮฟฮปฮฟฯ ฯฯฮทฮฝ ฮบฮฑฯฮฑฮฝฯฮทฯฮท ฮบฮฑฮน ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮตฮฏฯฮต ฯฮท ฮฒฮนฮฒฮปฮนฮฟฮธฮฎฮบฮท ฮฑฮผฮญฯฯฯ. ฮฮนฮฑ ฯฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ, ฯฮฏฮพฯฮต ฮผฮนฮฑ ฮผฮฑฯฮนฮฌ ฯฯฮฟ ฯฮฑฯฮฑฮบฮฌฯฯ ฮฑฯฯฯฯฮฑฯฮผฮฑ ฮบฯฮดฮนฮบฮฑ:
class Net(torch.nn.Module): def __init__(self): super(Net, self).__init__() self.layer = torch.nn.Linear(1, 1) def forward(self, x): x = self.layer(x) return x
ฮฯฯฯ ฮฑฮฝฮฑฯฮญฯฮธฮทฮบฮต ฯฮฑฯฮฑฯฮฌฮฝฯ, ฮผฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฮฟฯฮฏฯฮตฯฮต ฯฮฟ ฮผฮฟฮฝฯฮญฮปฮฟ ฮดฮนฮบฯฯฮฟฯ ฮตฯฮบฮฟฮปฮฑ ฮบฮฑฮน ฮผฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฮบฮฑฯฮฑฮฝฮฟฮฎฯฮตฯฮต ฯฮฟฮฝ ฮบฯฮดฮนฮบฮฑ ฮณฯฮฎฮณฮฟฯฮฑ ฯฯฯฮฏฯ ฯฮฟฮปฮปฮฎ ฮตฮบฯฮฑฮฏฮดฮตฯ ฯฮท.
- ฮฯ ฮฝฮฑฮผฮนฮบฯ ฮฅฯฮฟฮปฮฟฮณฮนฯฯฮนฮบฯ ฮฯฮฌฯฮทฮผฮฑ
ฮ ฮทฮณฮฎ ฮตฮนฮบฯฮฝฮฑฯ: ฮฮพฮตฯฮตฯ ฮฝฯฮฝฯฮฑฯ ฯฮท ฮฮฑฮธฮนฮฌ ฮฮฌฮธฮทฯฮท ฮผฮต PyTorch
PyTorฮคฮฟ ch ฯฯฮฟฯฯฮญฯฮตฮน ฮฯ ฮฝฮฑฮผฮนฮบฯ ฮฅฯฮฟฮปฮฟฮณฮนฯฯฮนฮบฯ ฮฯฮฌฯฮทฮผฮฑ (DAG). ฮคฮฑ ฯ ฯฮฟฮปฮฟฮณฮนฯฯฮนฮบฮฌ ฮณฯฮฑฯฮฎฮผฮฑฯฮฑ ฮตฮฏฮฝฮฑฮน ฮญฮฝฮฑฯ ฯฯฯฯฮฟฯ ฮญฮบฯฯฮฑฯฮทฯ ฮผฮฑฮธฮทฮผฮฑฯฮนฮบฯฮฝ ฮตฮบฯฯฮฌฯฮตฯฮฝ ฯฮต ฮผฮฟฮฝฯฮญฮปฮฑ ฮณฯฮฑฯฮทฮผฮฌฯฯฮฝ ฮฎ ฮธฮตฯฯฮฏฮตฯ ฯฯฯฯ ฮบฯฮผฮฒฮฟฮน ฮบฮฑฮน ฮฑฮบฮผฮญฯ. ฮ ฮบฯฮผฮฒฮฟฯ ฮธฮฑ ฮตฮบฯฮตฮปฮญฯฮตฮน ฯฮท ฮผฮฑฮธฮทฮผฮฑฯฮนฮบฮฎ ฯฯฮฌฮพฮท ฮบฮฑฮน ฮท ฮฑฮบฮผฮฎ ฮตฮฏฮฝฮฑฮน ฮญฮฝฮฑฯ Tensor ฯฮฟฯ ฮธฮฑ ฯฯฮฟฯฮฟฮดฮฟฯฮทฮธฮตฮฏ ฯฯฮฟฯ ฯ ฮบฯฮผฮฒฮฟฯ ฯ ฮบฮฑฮน ฮธฮฑ ฮผฮตฯฮฑฯฮญฯฮตฮน ฯฮทฮฝ ฮญฮพฮฟฮดฮฟ ฯฮฟฯ ฮบฯฮผฮฒฮฟฯ ฯฯฮฟ Tensor.
ฮคฮฟ DAG ฮตฮฏฮฝฮฑฮน ฮญฮฝฮฑ ฮณฯฮฌฯฮทฮผฮฑ ฯฮฟฯ ฮญฯฮตฮน ฮฑฯ ฮธฮฑฮฏฯฮตฯฮฟ ฯฯฮฎฮผฮฑ ฮบฮฑฮน ฮผฯฮฟฯฮตฮฏ ฮฝฮฑ ฮบฮฌฮฝฮตฮน ฯฯฮฌฮพฮตฮนฯ ฮผฮตฯฮฑฮพฯ ฮดฮนฮฑฯฮฟฯฮตฯฮนฮบฯฮฝ ฮณฯฮฑฯฮทฮผฮฌฯฯฮฝ ฮตฮนฯฯฮดฮฟฯ . ฮฮฌฮธฮต ฮตฯฮฑฮฝฮฌฮปฮทฯฮท ฮดฮทฮผฮนฮฟฯ ฯฮณฮตฮฏฯฮฑฮน ฮญฮฝฮฑ ฮฝฮญฮฟ ฮณฯฮฌฯฮทฮผฮฑ. ฮฯฯฮน, ฮตฮฏฮฝฮฑฮน ฮดฯ ฮฝฮฑฯฯฮฝ ฮฝฮฑ ฮญฯฮฟฯ ฮผฮต ฯฮทฮฝ ฮฏฮดฮนฮฑ ฮดฮฟฮผฮฎ ฮณฯฮฑฯฮฎฮผฮฑฯฮฟฯ ฮฎ ฮฝฮฑ ฮดฮทฮผฮนฮฟฯ ฯฮณฮฎฯฮฟฯ ฮผฮต ฮญฮฝฮฑ ฮฝฮญฮฟ ฮณฯฮฌฯฮทฮผฮฑ ฮผฮต ฮดฮนฮฑฯฮฟฯฮตฯฮนฮบฮฎ ฮปฮตฮนฯฮฟฯ ฯฮณฮฏฮฑ ฮฎ ฮผฯฮฟฯฮฟฯฮผฮต ฮฝฮฑ ฯฮฟ ฮฟฮฝฮฟฮผฮฌฯฮฟฯ ฮผฮต ฮดฯ ฮฝฮฑฮผฮนฮบฯ ฮณฯฮฌฯฮทฮผฮฑ.
- ฮบฮฑฮปฯฯฮตฯฮท ฮฑฯฯฮดฮฟฯฮท
ฮฮฟฮนฮฝฯฯฮทฯฮตฯ ฮบฮฑฮน ฮตฯฮตฯ ฮฝฮทฯฮญฯ, ฮผฮตฯฯฮฎฯฯฮต ฮบฮฑฮน ฯฯ ฮณฮบฯฮฏฮฝฮตฯฮต ฯฮปฮฑฮฏฯฮนฮฑ ฮณฮนฮฑ ฮฝฮฑ ฮดฮตฮฏฯฮต ฯฮฟฮนฮฟ ฮตฮฏฮฝฮฑฮน ฯฮนฮฟ ฮณฯฮฎฮณฮฟฯฮฟ. ฮฮฝฮฑ ฮฑฯฮฟฮธฮตฯฮฎฯฮนฮฟ GitHub ฮฃฮทฮผฮตฮฏฮฟ ฮฑฮฝฮฑฯฮฟฯฮฌฯ ฯฮต ฯฮปฮฑฮฏฯฮนฮฑ Deep Learning ฮบฮฑฮน GPU ฮฑฮฝฮญฯฮตฯฮต ฯฯฮน ฮฟ PyTorฮคฮฟ ch ฮตฮฏฮฝฮฑฮน ฯฮฑฯฯฯฮตฯฮฟ ฮฑฯฯ ฯฮฟ ฮฌฮปฮปฮฟ ฯฮปฮฑฮฏฯฮนฮฟ ฯฯฮฟฮฝ ฮฑฯฮฟฯฮฌ ฯฮนฯ ฮตฮนฮบฯฮฝฮตฯ ฯฮฟฯ ฮตฯฮตฮพฮตฯฮณฮฌฮถฮฟฮฝฯฮฑฮน ฮฑฮฝฮฌ ฮดฮตฯ ฯฮตฯฯฮปฮตฯฯฮฟ.
ฮฯฯฯ ฮผฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฮดฮตฮฏฯฮต ฯฮฑฯฮฑฮบฮฌฯฯ, ฯฮฑ ฮณฯฮฑฯฮฎฮผฮฑฯฮฑ ฯฯฮณฮบฯฮนฯฮทฯ ฮผฮต ฯฮฟ vgg16 ฮบฮฑฮน ฯฮฟ resnet152
- Native Python
PyTorฮคฮฟ ch ฮฒฮฑฯฮฏฮถฮตฯฮฑฮน ฯฮตฯฮนฯฯฯฯฮตฯฮฟ ฯฮต python. ฮฮนฮฑ ฯฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ, ฮฑฮฝ ฮธฮญฮปฮตฯฮต ฮฝฮฑ ฮตฮบฯฮฑฮนฮดฮตฯฯฮตฯฮต ฮญฮฝฮฑ ฮผฮฟฮฝฯฮญฮปฮฟ, ฮผฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮฎฯฮตฯฮต ฮตฮณฮณฮตฮฝฮฎ ฯฮฟฮฎ ฮตฮปฮญฮณฯฮฟฯ ฯฯฯฯ ฯฮฟ loo.ping ฮบฮฑฮน ฮฑฮฝฮฑฮดฯฮฟฮผฮญฯ ฯฯฯฮฏฯ ฯฮทฮฝ ฮฑฮฝฮฌฮณฮบฮท ฯฯฮฟฯฮธฮฎฮบฮทฯ ฯฮตฯฮนฯฯฯฯฮตฯฯฮฝ ฮตฮนฮดฮนฮบฯฮฝ ฮผฮตฯฮฑฮฒฮปฮทฯฯฮฝ ฮฎ ฯฯ ฮฝฮตฮดฯฮนฯฮฝ ฮณฮนฮฑ ฯฮทฮฝ ฮตฮบฯฮญฮปฮตฯฮฎ ฯฮฟฯ ฯ. ฮฯ ฯฯ ฮตฮฏฮฝฮฑฮน ฯฮฟฮปฯ ฯฯฮฎฯฮนฮผฮฟ ฮณฮนฮฑ ฯฮท ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฮตฮบฯฮฑฮฏฮดฮตฯ ฯฮทฯ.
PyTorฮคฮฟ ch ฮตฯฮฑฯฮผฯฮถฮตฮน ฮตฯฮฏฯฮทฯ ฮ ฯฮฟฯฯฮฑฮบฯฮนฮบฯ ฮ ฯฮฟฮณฯฮฑฮผฮผฮฑฯฮนฯฮผฯ, ฮบฮฑฮน ฮตฮฏฮฝฮฑฮน ฯฮฏฮณฮฟฯ ฯฮฑ ฯฮนฮฟ ฮตฯ ฮญฮปฮนฮบฯฮฟ. ฮฯฯฮน, ฮตฮฏฮฝฮฑฮน ฮดฯ ฮฝฮฑฯฯ ฮฝฮฑ ฮตฮบฯฯ ฯฯฯฮตฯฮต ฯฮทฮฝ ฯฮนฮผฮฎ ฯฮฟฯ ฯฮฑฮฝฯ ฯฯฮฎฯฮฑ ฯฯฮท ฮผฮญฯฮท ฮผฮนฮฑฯ ฯ ฯฮฟฮปฮฟฮณฮนฯฯฮนฮบฮฎฯ ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑฯ.
ฮฮตฮนฮฟฮฝฮญฮบฯฮทฮผฮฑ ฯฮฟฯ PyTorch
PyTorฮคฮฟ ch ฮฑฯฮฑฮนฯฮตฮฏ ฮตฯฮฑฯฮผฮฟฮณฮญฯ ฯฯฮฏฯฯฮฝ ฮณฮนฮฑ ฮฟฯฯฮนฮบฮฟฯฮฟฮฏฮทฯฮท. ฮงฯฮตฮนฮฌฮถฮตฯฮฑฮน ฮตฯฮฏฯฮทฯ ฮญฮฝฮฑฮฝ ฮดฮนฮฑฮบฮฟฮผฮนฯฯฮฎ API ฮณฮนฮฑ ฯฮฑฯฮฑฮณฯฮณฮฎ.
ฮฯฯฮผฮตฮฝฮฟ ฯฮต ฮฑฯ ฯฯ ฯฮฟ PyTorch tutorial, ฮธฮฑ ฮผฮฌฮธฮฟฯ ฮผฮต ฮณฮนฮฑ ฯฮท ฮดฮนฮฑฯฮฟฯฮฌ ฮผฮตฯฮฑฮพฯ PyTorch ฮบฮฑฮน TensorFlow.
PyTorch ฮตฮฝฮฑฮฝฯฮฏฮฟฮฝ TensorFlow
| ฮ ฮฑฯฮฌฮผฮตฯฯฮฟฯ | PyTorch | TensorFlow |
|---|---|---|
| ฮฯฮนฯฮผฯฯ ฮผฮฟฮฝฯฮญฮปฮฟฯ | ฮคฮฟ ฮผฮฟฮฝฯฮญฮปฮฟ ฮฟฯฮฏฮถฮตฯฮฑฮน ฯฮต ฮผฮนฮฑ ฯ ฯฮฟฮบฮฑฯฮทฮณฮฟฯฮฏฮฑ ฮบฮฑฮน ฯฯฮฟฯฯฮญฯฮตฮน ฮตฯฯฯฮทฯฯฮฟ ฯฮฑฮบฮญฯฮฟ | ฮคฮฟ ฮผฮฟฮฝฯฮญฮปฮฟ ฮฟฯฮฏฮถฮตฯฮฑฮน ฮผฮต ฯฮฟฮปฮปฮฌ ฮบฮฑฮน ฯฯฮญฯฮตฮน ฮฝฮฑ ฮบฮฑฯฮฑฮฝฮฟฮฎฯฮตฯฮต ฯฮท ฯฯฮฝฯฮฑฮพฮท |
| ฮฅฯฮฟฯฯฮฎฯฮนฮพฮท GPU | ฮฮฑฮน | ฮฮฑฮน |
| ฮคฯฯฮฟฯ ฮณฯฮฑฯฮฎฮผฮฑฯฮฟฯ | ฮฯ ฮฝฮฑฮผฮนฮบฯฯ | ฮฃฯฮฑฯฮนฮบฯฯ |
| ฮฯฮปฮปฮฑ | ฮงฯฯฮฏฯ ฮตฯฮณฮฑฮปฮตฮฏฮฟ ฮฟฯฯฮนฮบฮฟฯฮฟฮฏฮทฯฮทฯ | ฮฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮฎฯฮตฯฮต ฯฮฟ ฮตฯฮณฮฑฮปฮตฮฏฮฟ ฮฟฯฯฮนฮบฮฟฯฮฟฮฏฮทฯฮทฯ Tensorboard |
| ฮฮฟฮนฮฝฯฯฮทฯฮฑ | ฮ ฮบฮฟฮนฮฝฯฯฮทฯฮฑ ฮตฮพฮฑฮบฮฟฮปฮฟฯ ฮธฮตฮฏ ฮฝฮฑ ฮผฮตฮณฮฑฮปฯฮฝฮตฮน | ฮฮตฮณฮฌฮปฮตฯ ฮตฮฝฮตฯฮณฮญฯ ฮบฮฟฮนฮฝฯฯฮทฯฮตฯ |
ฮฯฮฟฮฝฯฮฑฯ ฮบฮฑฯฮฌ ฮฝฮฟฯ ฯฮท ฯฯฮณฮบฯฮนฯฮท, ฯฮฟ ฮตฯฯฮผฮตฮฝฮฟ ฮฒฮฎฮผฮฑ ฮตฮฏฮฝฮฑฮน ฮฝฮฑ ฮฒฯฮฟฯฮผฮต ฯฮทฮฝ PyTorch ฯฮฟฯ ฮตฮบฯฮตฮปฮตฮฏฯฮฑฮน ฯฮฟฯฮนฮบฮฌ ฮฎ ฯฯฮฟ cloud.
ฮฮณฮบฮฑฯฮฌฯฯฮฑฯฮท PyTorch
Linux
ฮฮฏฮฝฮฑฮน ฮตฯฮบฮฟฮปฮฟ ฮฝฮฑ ฯฮฟ ฮตฮณฮบฮฑฯฮฑฯฯฮฎฯฮตฯฮต ฯฮต Linux. ฮฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฮตฯฮนฮปฮญฮพฮตฯฮต ฮฝฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮฎฯฮตฯฮต ฮญฮฝฮฑ ฮตฮนฮบฮฟฮฝฮนฮบฯ ฯฮตฯฮนฮฒฮฌฮปฮปฮฟฮฝ ฮฎ ฮฝฮฑ ฯฮฟ ฮตฮณฮบฮฑฯฮฑฯฯฮฎฯฮตฯฮต ฮฑฯฮตฯ ฮธฮตฮฏฮฑฯ ฮผฮต ฯฯฯฯฮฒฮฑฯฮท root. ฮ ฮปฮทฮบฯฯฮฟฮปฮฟฮณฮฎฯฯฮต ฮฑฯ ฯฮฎฮฝ ฯฮทฮฝ ฮตฮฝฯฮฟฮปฮฎ ฯฯฮฟ ฯฮตฯฮผฮฑฯฮนฮบฯ
pip3 install --upgrade torch torchvision
AWS Sagemaker
ฮคฮฟ Sagemaker ฮตฮฏฮฝฮฑฮน ฮผฮฏฮฑ ฮฑฯฯ ฯฮนฯ ฯฮปฮฑฯฯฯฯฮผฮตฯ Amazon ฮฅฯฮทฯฮตฯฮฏฮฑ ฮฯฯฮฟฯ ฯฮฟฯ ฯฯฮฟฯฯฮญฯฮตฮน ฮผฮนฮฑ ฮนฯฯฯ ฯฮฎ ฮผฮทฯฮฑฮฝฮฎ ฮผฮทฯฮฑฮฝฮนฮบฮฎฯ ฮตฮบฮผฮฌฮธฮทฯฮทฯ ฮผฮต ฯฯฮฟฮตฮณฮบฮฑฯฮตฯฯฮทฮผฮญฮฝฮตฯ ฮดฮนฮฑฮผฮฟฯฯฯฯฮตฮนฯ ฮฒฮฑฮธฮนฮฌฯ ฮตฮบฮผฮฌฮธฮทฯฮทฯ ฮณฮนฮฑ ฮตฯฮนฯฯฮฎฮผฮฟฮฝฮตฯ ฮดฮตฮดฮฟฮผฮญฮฝฯฮฝ ฮฎ ฯฯฮฟฮณฯฮฑฮผฮผฮฑฯฮนฯฯฮญฯ ฮณฮนฮฑ ฯฮทฮฝ ฮบฮฑฯฮฑฯฮบฮตฯ ฮฎ, ฯฮทฮฝ ฮตฮบฯฮฑฮฏฮดฮตฯ ฯฮท ฮบฮฑฮน ฯฮทฮฝ ฮฑฮฝฮฌฯฯฯ ฮพฮท ฮผฮฟฮฝฯฮญฮปฯฮฝ ฯฮต ฮฟฯฮฟฮนฮฑฮดฮฎฯฮฟฯฮต ฮบฮปฮฏฮผฮฑฮบฮฑ.
ฮ ฯฯฯฮฑ ฮฑฮฝฮฟฮฏฮพฯฮต ฯฮฟ Amazon ฮจฮฑฮปฮฏฮดฮน ฮบฮฟฮฝฯฯฮปฮฑ ฮบฮฑฮน ฮบฮฌฮฝฯฮต ฮบฮปฮนฮบ ฯฯฮฟ Create notebook instance ฮบฮฑฮน ฯฯ ฮผฯฮปฮทฯฯฯฯฮต ฯฮปฮฑ ฯฮฑ ฯฯฮฟฮนฯฮตฮฏฮฑ ฮณฮนฮฑ ฯฮฟ notebook ฯฮฑฯ.
ฮฯฯฮผฮตฮฝฮฟ ฮฒฮฎฮผฮฑ, ฮบฮฌฮฝฯฮต ฮบฮปฮนฮบ ฯฯฮฟ ฮฮฝฮฟฮนฮณฮผฮฑ ฮณฮนฮฑ ฮฝฮฑ ฮตฮบฮบฮนฮฝฮฎฯฮตฯฮต ฯฮทฮฝ ฯฮฑฯฮฟฯ ฯฮฏฮฑ ฯฮฟฯ ฯฮฟฯฮทฯฮฟฯ ฯ ฯฮฟฮปฮฟฮณฮนฯฯฮฎ ฯฮฑฯ.
ฮคฮญฮปฮฟฯ, ฯฮฟ In Jupyter, ฮฮฌฮฝฯฮต ฮบฮปฮนฮบ ฯฯฮฟ ฮฮญฮฟ ฮบฮฑฮน ฮตฯฮนฮปฮญฮพฯฮต conda_pytorch_p36 ฮบฮฑฮน ฮตฮฏฯฯฮต ฮญฯฮฟฮนฮผฮฟฮน ฮฝฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮฎฯฮตฯฮต ฯฮทฮฝ ฯฮฑฯฮฟฯ ฯฮฏฮฑ ฯฮฟฯ ฯฮทฮผฮตฮนฯฮผฮฑฯฮฌฯฮนฮฟฯ ฯฮฑฯ ฮผฮต PyTorch ฮตฮณฮบฮฑฯฮตฯฯฮทฮผฮญฮฝฮฟ.
ฮฯฯฮผฮตฮฝฮฟ ฯฮต ฮฑฯ ฯฯ ฯฮฟ PyTorch tutorial, ฮธฮฑ ฮผฮฌฮธฮฟฯ ฮผฮต ฮณฮนฮฑ ฯฮฟ PyTorฮฮฑฯฮนฮบฮฌ ฯฯฮฟฮนฯฮตฮฏฮฑ ฯฮปฮฑฮนฯฮฏฮฟฯ ch.
ฮฯฮฟฯ ฮตฮณฮบฮฑฯฮฑฯฯฮฑฮธฮตฮฏ, ฯฮฟ ฮฏฮดฮนฮฟ ฯฮฟ API ฮตฮฏฮฝฮฑฮน ฮท ฮตฯฯฮผฮตฮฝฮท ฯฯฮฌฯฮท.
PyTorฮฮฑฯฮนฮบฮฌ ฯฯฮฟฮนฯฮตฮฏฮฑ ฯฮปฮฑฮนฯฮฏฮฟฯ ch
ฮฯ ฮผฮฌฮธฮฟฯ ฮผฮต ฯฮนฯ ฮฒฮฑฯฮนฮบฮญฯ ฮญฮฝฮฝฮฟฮนฮตฯ ฯฮฟฯ PyTorch ฯฯฮนฮฝ ฮฒฮฟฯ ฯฮฎฮพฮฟฯ ฮผฮต ฮฒฮฑฮธฮนฮฌ. PyTorฮคฮฟ ch ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮตฮฏ Tensor ฮณฮนฮฑ ฮบฮฌฮธฮต ฮผฮตฯฮฑฮฒฮปฮทฯฮฎ ฯฮฑฯฯฮผฮฟฮนฮฑ ฮผฮต ฯฮทฮฝ ndarray ฯฮฟฯ numpy ฮฑฮปฮปฮฌ ฮผฮต ฯ ฯฮฟฯฯฮฎฯฮนฮพฮท ฯ ฯฮฟฮปฮฟฮณฮนฯฮผฮฟฯ GPU. ฮฮดฯ ฮธฮฑ ฮตฮพฮทฮณฮฎฯฮฟฯ ฮผฮต ฯฮฟ ฮผฮฟฮฝฯฮญฮปฮฟ ฮดฮนฮบฯฯฮฟฯ , ฯฮท ฯฯ ฮฝฮฌฯฯฮทฯฮท ฮฑฯฯฮปฮตฮนฮฑฯ, ฯฮฟ Backprop ฮบฮฑฮน ฯฮฟ Optimizer.
ฮฮฟฮฝฯฮญฮปฮฟ ฮดฮนฮบฯฯฮฟฯ
ฮคฮฟ ฮดฮฏฮบฯฯ ฮฟ ฮผฯฮฟฯฮตฮฏ ฮฝฮฑ ฮบฮฑฯฮฑฯฮบฮตฯ ฮฑฯฯฮตฮฏ ฮผฮต ฯ ฯฮฟฮบฮฑฯฮทฮณฮฟฯฮฏฮฑ ฯฮฟฯ ฯฮฑฮบฮฟฯ.nn. ฮฅฯฮฌฯฯฮฟฯ ฮฝ 2 ฮบฯฯฮนฮฑ ฮผฮญฯฮท,
- ฮคฮฟ ฯฯฯฯฮฟ ฮผฮญฯฮฟฯ ฮตฮฏฮฝฮฑฮน ฮฝฮฑ ฮฟฯฮฏฯฮตฯฮต ฯฮนฯ ฯฮฑฯฮฑฮผฮญฯฯฮฟฯ ฯ ฮบฮฑฮน ฯฮฑ ฮตฯฮฏฯฮตฮดฮฑ ฯฮฟฯ ฮธฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮฎฯฮตฯฮต
- ฮคฮฟ ฮดฮตฯฯฮตฯฮฟ ฮผฮญฯฮฟฯ ฮตฮฏฮฝฮฑฮน ฮท ฮบฯฯฮนฮฑ ฮตฯฮณฮฑฯฮฏฮฑ ฯฮฟฯ ฮฟฮฝฮฟฮผฮฌฮถฮตฯฮฑฮน ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฯฯฮฟฯฮธฮทฯฮทฯ ฯฮฟฯ ฮธฮฑ ฮปฮฌฮฒฮตฮน ฮผฮนฮฑ ฮตฮฏฯฮฟฮดฮฟ ฮบฮฑฮน ฮธฮฑ ฯฯฮฟฮฒฮปฮญฯฮตฮน ฯฮทฮฝ ฮญฮพฮฟฮดฮฟ.
Import torch import torch.nn as nn import torch.nn.functional as F class Model(nn.Module): def __init__(self): super(Model, self).__init__() self.conv1 = nn.Conv2d(3, 20, 5) self.conv2 = nn.Conv2d(20, 40, 5) self.fc1 = nn.Linear(320, 10) def forward(self, x): x = F.relu(self.conv1(x)) x = F.relu(self.conv2(x)) x = x.view(-1, 320) x = F.relu(self.fc1(x)) return F.log_softmax(x) net = Model()
ฮฯฯฯ ฮผฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฮดฮตฮฏฯฮต ฯฮฑฯฮฑฯฮฌฮฝฯ, ฮดฮทฮผฮนฮฟฯ ฯฮณฮตฮฏฯฮต ฮผฮนฮฑ ฮบฮปฮฌฯฮท nn.Module ฯฮฟฯ ฮฟฮฝฮฟฮผฮฌฮถฮตฯฮฑฮน Model. ฮ ฮตฯฮนฮญฯฮตฮน 2 ฮตฯฮฏฯฮตฮดฮฑ Conv2d ฮบฮฑฮน ฮญฮฝฮฑ ฮฯฮฑฮผฮผฮนฮบฯ ฮตฯฮฏฯฮตฮดฮฟ. ฮคฮฟ ฯฯฯฯฮฟ ฯฯฯฯฮผฮฑ conv2d ฮญฯฮตฮน ฮตฮฏฯฮฟฮดฮฟ 3 ฮบฮฑฮน ฯฮฟ ฯฯฮฎฮผฮฑ ฮตฮพฯฮดฮฟฯ 20. ฮคฮฟ ฮดฮตฯฯฮตฯฮฟ ฯฯฯฯฮผฮฑ ฮธฮฑ ฮปฮฌฮฒฮตฮน ฮผฮนฮฑ ฮตฮฏฯฮฟฮดฮฟ 20 ฮบฮฑฮน ฮธฮฑ ฯฮฑฯฮฌฮณฮตฮน ฮญฮฝฮฑ ฯฯฮฎฮผฮฑ ฮตฮพฯฮดฮฟฯ 40. ฮคฮฟ ฯฮตฮปฮตฯ ฯฮฑฮฏฮฟ ฯฯฯฯฮผฮฑ ฮตฮฏฮฝฮฑฮน ฮญฮฝฮฑ ฯฮปฮฎฯฯฯ ฯฯ ฮฝฮดฮตฮดฮตฮผฮญฮฝฮฟ ฯฯฯฯฮผฮฑ ฯฮต ฯฯฮฎฮผฮฑ 320 ฮบฮฑฮน ฮธฮฑ ฯฮฑฯฮฌฮณฮตฮน ฮญฮพฮฟฮดฮฟ 10.
ฮ ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฯฯฮฟฯฮธฮทฯฮทฯ ฮธฮฑ ฮปฮฌฮฒฮตฮน ฮผฮนฮฑ ฮตฮฏฯฮฟฮดฮฟ ฯฮฟฯ X ฮบฮฑฮน ฮธฮฑ ฯฮทฮฝ ฯฯฮฟฯฮฟฮดฮฟฯฮฎฯฮตฮน ฯฯฮฟ ฮตฯฮฏฯฮตฮดฮฟ ฮผฮตฯฮฑฯฯฮฟฯฮฎฯ ฮบฮฑฮน ฮธฮฑ ฮตฮบฯฮตฮปฮญฯฮตฮน ฯฮท ฮปฮตฮนฯฮฟฯ ฯฮณฮฏฮฑ ReLU,
ฮฮผฮฟฮฏฯฯ, ฮธฮฑ ฯฯฮฟฯฮฟฮดฮฟฯฮฎฯฮตฮน ฮตฯฮฏฯฮทฯ ฯฮฟ ฮตฯฮฏฯฮตฮดฮฟ conv2. ฮฮตฯฮฌ ฮฑฯฯ ฮฑฯ ฯฯ, ฯฮฟ x ฮธฮฑ ฮฑฮฝฮฑฮดฮนฮฑฮผฮฟฯฯฯฮธฮตฮฏ ฯฮต (-1, 320) ฮบฮฑฮน ฮธฮฑ ฯฯฮฟฯฮฟฮดฮฟฯฮทฮธฮตฮฏ ฯฯฮฟ ฯฮตฮปฮนฮบฯ ฯฯฯฯฮผฮฑ FC. ฮ ฯฮนฮฝ ฯฯฮตฮฏฮปฮตฯฮต ฯฮทฮฝ ฮญฮพฮฟฮดฮฟ, ฮธฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮฎฯฮตฯฮต ฯฮท ฮปฮตฮนฯฮฟฯ ฯฮณฮฏฮฑ ฮตฮฝฮตฯฮณฮฟฯฮฟฮฏฮทฯฮทฯ softmax.
ฮ ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฯฯฮฟฯ ฯฮฑ ฯฮฏฯฯ ฮฟฯฮฏฮถฮตฯฮฑฮน ฮฑฯ ฯฯฮผฮฑฯฮฑ ฮฑฯฯ ฯฮฟ autograd, ฮตฯฮฟฮผฮญฮฝฯฯ ฯฯฮตฮนฮฌฮถฮตฯฮฑฮน ฮผฯฮฝฮฟ ฮฝฮฑ ฮฟฯฮฏฯฮตฯฮต ฯฮท ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฯฯฮฟฯฮธฮทฯฮทฯ.
ฮฮตฮนฯฮฟฯ ฯฮณฮฏฮฑ ฮฑฯฯฮปฮตฮนฮฑฯ
ฮ ฯฯ ฮฝฮฌฯฯฮทฯฮท ฮฑฯฯฮปฮตฮนฮฑฯ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮตฮฏฯฮฑฮน ฮณฮนฮฑ ฮฝฮฑ ฮผฮตฯฯฮฎฯฮตฮน ฯฯฯฮฟ ฮบฮฑฮปฮฌ ฯฮฟ ฮผฮฟฮฝฯฮญฮปฮฟ ฯฯฯฮฒฮปฮตฯฮทฯ ฮตฮฏฮฝฮฑฮน ฯฮต ฮธฮญฯฮท ฮฝฮฑ ฯฯฮฟฮฒฮปฮญฯฮตฮน ฯฮฑ ฮฑฮฝฮฑฮผฮตฮฝฯฮผฮตฮฝฮฑ ฮฑฯฮฟฯฮตฮปฮญฯฮผฮฑฯฮฑ. PyTorฮคฮฟ ch ฮญฯฮตฮน ฮฎฮดฮท ฯฮฟฮปฮปฮญฯ ฯฯ ฯฮนฮบฮญฯ ฯฯ ฮฝฮฑฯฯฮฎฯฮตฮนฯ ฮฑฯฯฮปฮตฮนฮฑฯ ฯฯฮทฮฝ ฮตฮฝฯฯฮทฯฮฑ torch.nn. ฮฮนฮฑ ฯฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ, ฮผฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮฎฯฮตฯฮต ฯฮทฮฝ ฮฯฯฮปฮตฮนฮฑ ฮฮนฮฑฯฯฮฑฯ ฯฮฟฯฮผฮตฮฝฮทฯ ฮฮฝฯฯฮฟฯฮฏฮฑฯ ฮณฮนฮฑ ฮฝฮฑ ฮปฯฯฮตฯฮต ฮญฮฝฮฑ ฯฯฯฮฒฮปฮทฮผฮฑ Py ฯฮฟฮปฮปฮฑฯฮปฯฮฝ ฮบฮปฮฌฯฮตฯฮฝ.Torฯฯฯฮฒฮปฮทฮผฮฑ ฯฮฑฮพฮนฮฝฯฮผฮทฯฮทฯ ch. ฮฮฏฮฝฮฑฮน ฮตฯฮบฮฟฮปฮฟ ฮฝฮฑ ฮฟฯฮฏฯฮตฯฮต ฯฮท ฯฯ ฮฝฮฌฯฯฮทฯฮท ฮฑฯฯฮปฮตฮนฮฑฯ ฮบฮฑฮน ฮฝฮฑ ฯ ฯฮฟฮปฮฟฮณฮฏฯฮตฯฮต ฯฮนฯ ฮฑฯฯฮปฮตฮนฮตฯ:
loss_fn = nn.CrossEntropyLoss() #training process loss = loss_fn(out, target)
ฮฮฏฮฝฮฑฮน ฮตฯฮบฮฟฮปฮฟ ฮฝฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮฎฯฮตฯฮต ฯฮฟฮฝ ฮดฮนฮบฯ ฯฮฑฯ ฯ ฯฮฟฮปฮฟฮณฮนฯฮผฯ ฯฯ ฮฝฮฌฯฯฮทฯฮทฯ ฮฑฯฯฮปฮตฮนฮฑฯ ฮผฮต PyTorch.
ฮฃฯฮฎฯฮนฮณฮผฮฑ ฯฮปฮฌฯฮทฯ
ฮฮนฮฑ ฮฝฮฑ ฮตฮบฯฮตฮปฮญฯฮตฯฮต ฯฮทฮฝ backpropagation, ฮบฮฑฮปฮตฮฏฯฮต ฮฑฯฮปฯฯ ฯฮฟ los.backward(). ฮคฮฟ ฯฯฮฌฮปฮผฮฑ ฮธฮฑ ฯ ฯฮฟฮปฮฟฮณฮนฯฯฮตฮฏ, ฮฑฮปฮปฮฌ ฮธฯ ฮผฮทฮธฮตฮฏฯฮต ฮฝฮฑ ฮดฮนฮฑฮณฯฮฌฯฮตฯฮต ฯฮทฮฝ ฯ ฯฮฌฯฯฮฟฯ ฯฮฑ ฮดฮนฮฑฮฒฮฌฮธฮผฮนฯฮท ฮผฮต zero_grad()
net.zero_grad() # to clear the existing gradient loss.backward() # to perform backpropragation
Optimizer
ฮคฮฟ torch.optim ฯฮฑฯฮญฯฮตฮน ฮบฮฟฮนฮฝฮฟฯฯ ฮฑฮปฮณฯฯฮนฮธฮผฮฟฯ ฯ ฮฒฮตฮปฯฮนฯฯฮฟฯฮฟฮฏฮทฯฮทฯ. ฮฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฮฟฯฮฏฯฮตฯฮต ฮญฮฝฮฑฮฝ ฮฒฮตฮปฯฮนฯฯฮฟฯฮฟฮนฮทฯฮฎ ฮผฮต ฮญฮฝฮฑ ฮฑฯฮปฯ ฮฒฮฎฮผฮฑ:
optimizer = torch.optim.SGD(net.parameters(), lr = 0.01, momentum=0.9)
ฮ ฯฮญฯฮตฮน ฮฝฮฑ ฮผฮตฯฮฑฮฒฮนฮฒฮฌฯฮตฯฮต ฯฮนฯ ฯฮฑฯฮฑฮผฮญฯฯฮฟฯ ฯ ฯฮฟฯ ฮผฮฟฮฝฯฮญฮปฮฟฯ ฮดฮนฮบฯฯฮฟฯ ฮบฮฑฮน ฯฮฟฮฝ ฯฯ ฮธฮผฯ ฮตฮบฮผฮฌฮธฮทฯฮทฯ, ฮญฯฯฮน ฯฯฯฮต ฯฮต ฮบฮฌฮธฮต ฮตฯฮฑฮฝฮฌฮปฮทฯฮท ฮฟฮน ฯฮฑฯฮฌฮผฮตฯฯฮฟฮน ฮฝฮฑ ฮตฮฝฮทฮผฮตฯฯฮฝฮฟฮฝฯฮฑฮน ฮผฮตฯฮฌ ฯฮท ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ backprop.
ฮ ฯฮนฮฟ ฮบฮฑฮธฮฑฯฯฯ ฯฯฯฯฮฟฯ ฮณฮนฮฑ ฮฝฮฑ ฮผฮฌฮธฮตฯฮต ฯฮฟ API ฮตฮฏฮฝฮฑฮน ฮญฮฝฮฑ ฮผฮนฮบฯฯ, ฮฟฮปฮฟฮบฮปฮทฯฯฮผฮญฮฝฮฟ ฯฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ.
ฮฯฮปฮฎ ฮ ฮฑฮปฮนฮฝฮดฯฯฮผฮทฯฮท ฮผฮต PyTorch
ฮฯ ฮผฮฌฮธฮฟฯ ฮผฮต ฮฑฯฮปฮฎ ฯฮฑฮปฮนฮฝฮดฯฯฮผฮทฯฮท ฮผฮต PyTorฯฮฑฯฮฑฮดฮตฮฏฮณฮผฮฑฯฮฑ ch:
ฮฮฎฮผฮฑ 1) ฮฮทฮผฮนฮฟฯ ฯฮณฮฏฮฑ ฮผฮฟฮฝฯฮญฮปฮฟฯ ฮดฮนฮบฯฯฮฟฯ
ฮคฮฟ ฮผฮฟฮฝฯฮญฮปฮฟ ฮดฮนฮบฯฯฮฟฯ ฮผฮฑฯ ฮตฮฏฮฝฮฑฮน ฮญฮฝฮฑ ฮฑฯฮปฯ ฮฯฮฑฮผฮผฮนฮบฯ ฮตฯฮฏฯฮตฮดฮฟ ฮผฮต ฯฯฮฎฮผฮฑ ฮตฮนฯฯฮดฮฟฯ ฮบฮฑฮน ฮตฮพฯฮดฮฟฯ 1.
from __future__ import print_function import torch import torch.nn as nn import torch.nn.functional as F from torch.autograd import Variable class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.layer = torch.nn.Linear(1, 1) def forward(self, x): x = self.layer(x) return x net = Net() print(net)
ฮฮฑฮน ฮท ฮญฮพฮฟฮดฮฟฯ ฮดฮนฮบฯฯฮฟฯ ฮธฮฑ ฯฯฮญฯฮตฮน ฮฝฮฑ ฮตฮฏฮฝฮฑฮน ฮญฯฯฮน
Net( (hidden): Linear(in_features=1, out_features=1, bias=True) )
ฮฮฎฮผฮฑ 2) ฮฮตฮดฮฟฮผฮญฮฝฮฑ ฮดฮฟฮบฮนฮผฮฎฯ
ฮ ฯฮนฮฝ ฮพฮตฮบฮนฮฝฮฎฯฮตฯฮต ฯฮท ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฮตฮบฯฮฑฮฏฮดฮตฯ ฯฮทฯ, ฯฯฮญฯฮตฮน ฮฝฮฑ ฮณฮฝฯฯฮฏฮถฮตฯฮต ฯฮฑ ฮดฮตฮดฮฟฮผฮญฮฝฮฑ ฮผฮฑฯ. ฮฮทฮผฮนฮฟฯ ฯฮณฮตฮฏฯฮต ฮผฮนฮฑ ฯฯ ฯฮฑฮฏฮฑ ฯฯ ฮฝฮฌฯฯฮทฯฮท ฮณฮนฮฑ ฮฝฮฑ ฮดฮฟฮบฮนฮผฮฌฯฮตฯฮต ฯฮฟ ฮผฮฟฮฝฯฮญฮปฮฟ ฮผฮฑฯ. ฮฅ = x3 sin(x)+ 3x+0.8 rand(100)
# Visualize our data import matplotlib.pyplot as plt import numpy as np x = np.random.rand(100) y = np.sin(x) * np.power(x,3) + 3*x + np.random.rand(100)*0.8 plt.scatter(x, y) plt.show()
ฮฮดฯ ฮตฮฏฮฝฮฑฮน ฯฮฟ ฮดฮนฮฌฮณฯฮฑฮผฮผฮฑ ฮดฮนฮฑฯฯฮฟฯฮฌฯ ฯฮทฯ ฯฯ ฮฝฮฌฯฯฮทฯฮฎฯ ฮผฮฑฯ:
ฮ ฯฮนฮฝ ฮพฮตฮบฮนฮฝฮฎฯฮตฯฮต ฯฮท ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฮตฮบฯฮฑฮฏฮดฮตฯ ฯฮทฯ, ฯฯฮญฯฮตฮน ฮฝฮฑ ฮผฮตฯฮฑฯฯฮญฯฮตฯฮต ฯฮฟฮฝ ฯฮฏฮฝฮฑฮบฮฑ numpy ฯฮต ฮผฮตฯฮฑฮฒฮปฮทฯฮญฯ ฯฮฟฯ ฯ ฯฮฟฯฯฮทฯฮฏฮถฮฟฮฝฯฮฑฮน ฮฑฯฯ Torch ฮบฮฑฮน autograd ฯฯฯฯ ฯฮฑฮฏฮฝฮตฯฮฑฮน ฯฯฮฟ ฯฮฑฯฮฑฮบฮฌฯฯ PyTorฯฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฯฮฑฮปฮนฮฝฮดฯฯฮผฮทฯฮทฯ ch.
# convert numpy array to tensor in shape of input size x = torch.from_numpy(x.reshape(-1,1)).float() y = torch.from_numpy(y.reshape(-1,1)).float() print(x, y)
ฮฮฎฮผฮฑ 3) Optimizer and Loss
ฮฃฯฮท ฯฯ ฮฝฮญฯฮตฮนฮฑ, ฮธฮฑ ฯฯฮญฯฮตฮน ฮฝฮฑ ฮฟฯฮฏฯฮตฯฮต ฯฮฟ Optimizer ฮบฮฑฮน ฯฮท ฯฯ ฮฝฮฌฯฯฮทฯฮท ฮฑฯฯฮปฮตฮนฮฑฯ ฮณฮนฮฑ ฯฮท ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฮตฮบฯฮฑฮฏฮดฮตฯ ฯฮฎฯ ฮผฮฑฯ.
# Define Optimizer and Loss Function optimizer = torch.optim.SGD(net.parameters(), lr=0.2) loss_func = torch.nn.MSELoss()
ฮฮฎฮผฮฑ 4) ฮฮบฯฮฑฮฏฮดฮตฯ ฯฮท
ฮคฯฯฮฑ ฮฑฯ ฮพฮตฮบฮนฮฝฮฎฯฮฟฯ ฮผฮต ฯฮทฮฝ ฯฯฮฟฯฮฟฮฝฮทฯฮนฮบฮฎ ฮผฮฑฯ ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ. ฮฮต ฮผฮนฮฑ ฮตฯฮฟฯฮฎ 250, ฮธฮฑ ฮตฯฮฑฮฝฮฑฮปฮฌฮฒฮตฯฮต ฯฮฑ ฮดฮตฮดฮฟฮผฮญฮฝฮฑ ฮผฮฑฯ ฮณฮนฮฑ ฮฝฮฑ ฮฒฯฮตฮฏฯฮต ฯฮทฮฝ ฮบฮฑฮปฯฯฮตฯฮท ฯฮนฮผฮฎ ฮณฮนฮฑ ฯฮนฯ ฯ ฯฮตฯฯฮฑฯฮฑฮผฮญฯฯฮฟฯ ฯ ฮผฮฑฯ.
inputs = Variable(x) outputs = Variable(y) for i in range(250): prediction = net(inputs) loss = loss_func(prediction, outputs) optimizer.zero_grad() loss.backward() optimizer.step() if i % 10 == 0: # plot and show learning process plt.cla() plt.scatter(x.data.numpy(), y.data.numpy()) plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=2) plt.text(0.5, 0, 'Loss=%.4f' % loss.data.numpy(), fontdict={'size': 10, 'color': 'red'}) plt.pause(0.1) plt.show()
ฮฮฎฮผฮฑ 5) ฮฯฮฟฯฮญฮปฮตฯฮผฮฑ
ฮฯฯฯ ฮผฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฮดฮตฮฏฯฮต ฯฮฑฯฮฑฮบฮฌฯฯ, ฮตฮบฯฮตฮปฮญฯฮฑฯฮต ฮผฮต ฮตฯฮนฯฯ ฯฮฏฮฑ ฯฮทฮฝ PyTorฯฮฑฮปฮนฮฝฮดฯฯฮผฮทฯฮท ch ฮผฮต ฮญฮฝฮฑ ฮฝฮตฯ ฯฯฮฝฮนฮบฯ ฮดฮฏฮบฯฯ ฮฟ. ฮฃฯฮทฮฝ ฯฯฮฑฮณฮผฮฑฯฮนฮบฯฯฮทฯฮฑ, ฯฮต ฮบฮฌฮธฮต ฮตฯฮฑฮฝฮฌฮปฮทฯฮท, ฮท ฮบฯฮบฮบฮนฮฝฮท ฮณฯฮฑฮผฮผฮฎ ฯฯฮฟ ฮดฮนฮฌฮณฯฮฑฮผฮผฮฑ ฮธฮฑ ฮตฮฝฮทฮผฮตฯฯฮฝฮตฯฮฑฮน ฮบฮฑฮน ฮธฮฑ ฮฑฮปฮปฮฌฮถฮตฮน ฯฮท ฮธฮญฯฮท ฯฮทฯ ฯฯฯฮต ฮฝฮฑ ฯฮฑฮนฯฮนฮฌฮถฮตฮน ฯฯฮฑ ฮดฮตฮดฮฟฮผฮญฮฝฮฑ. ฮฮปฮปฮฌ ฯฮต ฮฑฯ ฯฮฎฮฝ ฯฮทฮฝ ฮตฮนฮบฯฮฝฮฑ, ฯฮฑฯ ฮดฮตฮฏฯฮฝฮตฮน ฮผฯฮฝฮฟ ฯฮฟ ฯฮตฮปฮนฮบฯ ฮฑฯฮฟฯฮญฮปฮตฯฮผฮฑ ฯฯฯฯ ฯฮฑฮฏฮฝฮตฯฮฑฮน ฯฯฮฟ ฯฮฑฯฮฑฮบฮฌฯฯ Py.Torฯฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ch:
ฮ ฯฮฑฮปฮนฮฝฮดฯฯฮผฮทฯฮท ฮตฮฏฮฝฮฑฮน ฮผฮนฮฑ ฯฯฮฟฮธฮญฯฮผฮฑฮฝฯฮทยท ฮท ฯฮฑฮพฮนฮฝฯฮผฮทฯฮท ฮตฮนฮบฯฮฝฯฮฝ ฮฑฯฮบฮตฮฏ ฯฮฟฯ ฯ ฮผฯฮตฯ ฮฒฮฑฮธฮนฮฌฯ ฮผฮฌฮธฮทฯฮทฯ ฯฮฟฯ Py.Torch.
ฮ ฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฮคฮฑฮพฮนฮฝฯฮผฮทฯฮทฯ ฮฮนฮบฯฮฝฯฮฝ ฮผฮต PyTorch
ฮฮฏฮฑ ฮฑฯฯ ฯฮนฯ ฮดฮทฮผฮฟฯฮนฮปฮตฮฏฯ ฮผฮตฮธฯฮดฮฟฯ ฯ ฮณฮนฮฑ ฮฝฮฑ ฮผฮฌฮธฮตฯฮต ฯฮฑ ฮฒฮฑฯฮนฮบฮฌ ฮฒฮฑฮธฮนฮฌ ฮผฮฌฮธฮทฯฮท ฮตฮฏฮฝฮฑฮน ฮผฮต ฯฮฟ ฯฯฮฝฮฟฮปฮฟ ฮดฮตฮดฮฟฮผฮญฮฝฯฮฝ MNIST. ฮฮฏฮฝฮฑฮน ฯฮฟ ยซHello Worldยป ฯฯฮท ฮฒฮฑฮธฮนฮฌ ฮผฮฌฮธฮทฯฮท. ฮคฮฟ ฯฯฮฝฮฟฮปฮฟ ฮดฮตฮดฮฟฮผฮญฮฝฯฮฝ ฯฮตฯฮนฮญฯฮตฮน ฯฮตฮนฯฯฮณฯฮฑฯฮฟฯ ฯ ฮฑฯฮนฮธฮผฮฟฯฯ ฮฑฯฯ ฯฮฟ 0 ฮญฯฯ ฯฮฟ 9 ฮผฮต ฯฮฟ ฯฯฮฝฮฟฮปฮฟ ฯฯฮฝ 60,000 ฮดฮตฮนฮณฮผฮฌฯฯฮฝ ฮตฮบฯฮฑฮฏฮดฮตฯ ฯฮทฯ ฮบฮฑฮน 10,000 ฮดฮตฮนฮณฮผฮฌฯฯฮฝ ฮดฮฟฮบฮนฮผฮฎฯ ฯฮฟฯ ฮญฯฮฟฯ ฮฝ ฮฎฮดฮท ฮตฯฮนฯฮทฮผฮฑฮฝฮธฮตฮฏ ฮผฮต ฯฮฟ ฮผฮญฮณฮตฮธฮฟฯ 28ร28 pixel.
ฮฮฎฮผฮฑ 1) ฮ ฯฮฟฮตฯฮตฮพฮตฯฮณฮฑฯฯฮตฮฏฯฮต ฯฮฑ ฮฮตฮดฮฟฮผฮญฮฝฮฑ
ฮฃฯฮฟ ฯฯฯฯฮฟ ฮฒฮฎฮผฮฑ ฮฑฯ ฯฮฟฯ ฯฮฟฯ PyTorฮฃฯฮฟ ฯฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฯฮฑฮพฮนฮฝฯฮผฮทฯฮทฯ ch, ฮธฮฑ ฯฮฟฯฯฯฯฮตฯฮต ฯฮฟ ฯฯฮฝฮฟฮปฮฟ ฮดฮตฮดฮฟฮผฮญฮฝฯฮฝ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฯฮฝฯฮฑฯ ฯฮท ฮผฮฟฮฝฮฌฮดฮฑ torchvision.
ฮ ฯฮนฮฝ ฮพฮตฮบฮนฮฝฮฎฯฮตฯฮต ฯฮท ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฮตฮบฯฮฑฮฏฮดฮตฯ ฯฮทฯ, ฯฯฮญฯฮตฮน ฮฝฮฑ ฮบฮฑฯฮฑฮฝฮฟฮฎฯฮตฯฮต ฯฮฑ ฮดฮตฮดฮฟฮผฮญฮฝฮฑ. Torฮคฮฟ chvision ฮธฮฑ ฯฮฟฯฯฯฯฮตฮน ฯฮฟ ฯฯฮฝฮฟฮปฮฟ ฮดฮตฮดฮฟฮผฮญฮฝฯฮฝ ฮบฮฑฮน ฮธฮฑ ฮผฮตฯฮฑฯฯฮทฮผฮฑฯฮฏฯฮตฮน ฯฮนฯ ฮตฮนฮบฯฮฝฮตฯ ฮผฮต ฯฮนฯ ฮบฮฑฯฮฌฮปฮปฮทฮปฮตฯ ฮฑฯฮฑฮนฯฮฎฯฮตฮนฯ ฮณฮนฮฑ ฯฮฟ ฮดฮฏฮบฯฯ ฮฟ, ฯฯฯฯ ฯฮฟ ฯฯฮฎฮผฮฑ ฮบฮฑฮน ฯฮทฮฝ ฮฟฮผฮฑฮปฮฟฯฮฟฮฏฮทฯฮท ฯฯฮฝ ฮตฮนฮบฯฮฝฯฮฝ.
import torch import torchvision import numpy as np from torchvision import datasets, models, transforms # This is used to transform the images to Tensor and normalize it transform = transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) training = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform) train_loader = torch.utils.data.DataLoader(training, batch_size=4, shuffle=True, num_workers=2) testing = torchvision.datasets.MNIST(root='./data', train=False, download=True, transform=transform) test_loader = torch.utils.data.DataLoader(testing, batch_size=4, shuffle=False, num_workers=2) classes = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9') import matplotlib.pyplot as plt import numpy as np #create an iterator for train_loader # get random training images data_iterator = iter(train_loader) images, labels = data_iterator.next() #plot 4 images to visualize the data rows = 2 columns = 2 fig=plt.figure() for i in range(4): fig.add_subplot(rows, columns, i+1) plt.title(classes[labels[i]]) img = images[i] / 2 + 0.5 # this is for unnormalize the image img = torchvision.transforms.ToPILImage()(img) plt.imshow(img) plt.show()
ฮ ฯฯ ฮฝฮฌฯฯฮทฯฮท ฮผฮตฯฮฑฯฯฮทฮผฮฑฯฮนฯฮผฮฟฯ ฮผฮตฯฮฑฯฯฮญฯฮตฮน ฯฮนฯ ฮตฮนฮบฯฮฝฮตฯ ฯฮต ฯฮฑฮฝฯ ฯฯฮฎ ฮบฮฑฮน ฮบฮฑฮฝฮฟฮฝฮนฮบฮฟฯฮฟฮนฮตฮฏ ฯฮทฮฝ ฯฮนฮผฮฎ. ฮ ฯฯ ฮฝฮฌฯฯฮทฯฮท torchvision.transforms.MNIST, ฮธฮฑ ฮบฮฑฯฮตฮฒฮฌฯฮตฮน ฯฮฟ ฯฯฮฝฮฟฮปฮฟ ฮดฮตฮดฮฟฮผฮญฮฝฯฮฝ (ฮตฮฌฮฝ ฮดฮตฮฝ ฮตฮฏฮฝฮฑฮน ฮดฮนฮฑฮธฮญฯฮนฮผฮฟ) ฯฯฮฟฮฝ ฮบฮฑฯฮฌฮปฮฟฮณฮฟ, ฮธฮฑ ฮฟฯฮฏฯฮตฮน ฯฮฟ ฯฯฮฝฮฟฮปฮฟ ฮดฮตฮดฮฟฮผฮญฮฝฯฮฝ ฮณฮนฮฑ ฮตฮบฯฮฑฮฏฮดฮตฯ ฯฮท ฮตฮฌฮฝ ฮตฮฏฮฝฮฑฮน ฮฑฯฮฑฯฮฑฮฏฯฮทฯฮฟ ฮบฮฑฮน ฮธฮฑ ฮบฮฌฮฝฮตฮน ฯฮท ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฮผฮตฯฮฑฯฯฮทฮผฮฑฯฮนฯฮผฮฟฯ.
ฮฮนฮฑ ฮฝฮฑ ฮฟฯฯฮนฮบฮฟฯฮฟฮนฮฎฯฮตฯฮต ฯฮฟ ฯฯฮฝฮฟฮปฮฟ ฮดฮตฮดฮฟฮผฮญฮฝฯฮฝ, ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮตฮฏฯฮต ฯฮฟ data_iterator ฮณฮนฮฑ ฮฝฮฑ ฮปฮฌฮฒฮตฯฮต ฯฮทฮฝ ฮตฯฯฮผฮตฮฝฮท ฯฮฑฯฯฮฏฮดฮฑ ฮตฮนฮบฯฮฝฯฮฝ ฮบฮฑฮน ฮตฯฮนฮบฮตฯฯฮฝ. ฮงฯฮทฯฮนฮผฮฟฯฮฟฮนฮตฮฏฯฮต matplot ฮณฮนฮฑ ฮฝฮฑ ฯฯฮตฮดฮนฮฌฯฮตฯฮต ฮฑฯ ฯฮญฯ ฯฮนฯ ฮตฮนฮบฯฮฝฮตฯ ฮบฮฑฮน ฯฮทฮฝ ฮบฮฑฯฮฌฮปฮปฮทฮปฮท ฮตฯฮนฮบฮญฯฮฑ ฯฮฟฯ ฯ. ฮฯฯฯ ฮผฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฮดฮตฮฏฯฮต ฯฮฑฯฮฑฮบฮฌฯฯ ฯฮนฯ ฮตฮนฮบฯฮฝฮตฯ ฮผฮฑฯ ฮบฮฑฮน ฯฮนฯ ฮตฯฮนฮบฮญฯฮตฯ ฯฮฟฯ ฯ.
ฮฮฎฮผฮฑ 2) ฮฮนฮฑฮผฯฯฯฯฯฮท ฮผฮฟฮฝฯฮญฮปฮฟฯ ฮดฮนฮบฯฯฮฟฯ
ฮคฯฯฮฑ ฯฮต ฮฑฯ ฯฯ ฯฮฟ PyTorฯฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ, ฮธฮฑ ฮดฮทฮผฮนฮฟฯ ฯฮณฮฎฯฮตฯฮต ฮญฮฝฮฑ ฮฑฯฮปฯ ฮฝฮตฯ ฯฯฮฝฮนฮบฯ ฮดฮฏฮบฯฯ ฮฟ ฮณฮนฮฑ PyTorฯฮฑฮพฮนฮฝฯฮผฮทฯฮท ฮตฮนฮบฯฮฝฮฑฯ ch.
ฮฮดฯ, ฯฮฑฯ ฯฮฑฯฮฟฯ ฯฮนฮฌฮถฮฟฯ ฮผฮต ฮญฮฝฮฑฮฝ ฮฌฮปฮปฮฟ ฯฯฯฯฮฟ ฮดฮทฮผฮนฮฟฯ ฯฮณฮฏฮฑฯ ฯฮฟฯ ฮผฮฟฮฝฯฮญฮปฮฟฯ ฮดฮนฮบฯฯฮฟฯ ฯฯฮฟ PyTorฮบฮตฯ. ฮฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮฎฯฮฟฯ ฮผฮต ฯฮทฮฝ nn.Sequential ฮณฮนฮฑ ฮฝฮฑ ฮดฮทฮผฮนฮฟฯ ฯฮณฮฎฯฮฟฯ ฮผฮต ฮญฮฝฮฑ ฮผฮฟฮฝฯฮญฮปฮฟ ฮฑฮบฮฟฮปฮฟฯ ฮธฮฏฮฑฯ ฮฑฮฝฯฮฏ ฮฝฮฑ ฮดฮทฮผฮนฮฟฯ ฯฮณฮฎฯฮฟฯ ฮผฮต ฮผฮนฮฑ ฯ ฯฮฟฮบฮปฮฌฯฮท ฯฮทฯ nn.Module.
import torch.nn as nn # flatten the tensor into class Flatten(nn.Module): def forward(self, input): return input.view(input.size(0), -1) #sequential based model seq_model = nn.Sequential( nn.Conv2d(1, 10, kernel_size=5), nn.MaxPool2d(2), nn.ReLU(), nn.Dropout2d(), nn.Conv2d(10, 20, kernel_size=5), nn.MaxPool2d(2), nn.ReLU(), Flatten(), nn.Linear(320, 50), nn.ReLU(), nn.Linear(50, 10), nn.Softmax(), ) net = seq_model print(net)
ฮฮดฯ ฮตฮฏฮฝฮฑฮน ฮท ฮญฮพฮฟฮดฮฟฯ ฯฮฟฯ ฮผฮฟฮฝฯฮญฮปฮฟฯ ฮดฮนฮบฯฯฮฟฯ ฮผฮฑฯ
Sequential( (0): Conv2d(1, 10, kernel_size=(5, 5), stride=(1, 1)) (1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False) (2): ReLU() (3): Dropout2d(p=0.5) (4): Conv2d(10, 20, kernel_size=(5, 5), stride=(1, 1)) (5): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False) (6): ReLU() (7): Flatten() (8): Linear(in_features=320, out_features=50, bias=True) (9): ReLU() (10): Linear(in_features=50, out_features=10, bias=True) (11): Softmax() )
ฮฯฮตฮพฮฎฮณฮทฯฮท ฮดฮนฮบฯฯฮฟฯ
- ฮ ฮฑฮบฮฟฮปฮฟฯ ฮธฮฏฮฑ ฮตฮฏฮฝฮฑฮน ฯฯฮน ฯฮฟ ฯฯฯฯฮฟ ฯฯฯฯฮผฮฑ ฮตฮฏฮฝฮฑฮน ฮญฮฝฮฑ ฯฯฯฯฮผฮฑ Conv2D ฮผฮต ฯฯฮฎฮผฮฑ ฮตฮนฯฯฮดฮฟฯ 1 ฮบฮฑฮน ฯฯฮฎฮผฮฑ ฮตฮพฯฮดฮฟฯ 10 ฮผฮต ฮผฮญฮณฮตฮธฮฟฯ ฯฯ ฯฮฎฮฝฮฑ 5
- ฮฃฯฮท ฯฯ ฮฝฮญฯฮตฮนฮฑ, ฮญฯฮตฯฮต ฮญฮฝฮฑ ฮตฯฮฏฯฮตฮดฮฟ MaxPool2D
- ฮฮนฮฑ ฮปฮตฮนฯฮฟฯ ฯฮณฮฏฮฑ ฮตฮฝฮตฯฮณฮฟฯฮฟฮฏฮทฯฮทฯ ReLU
- ฮญฮฝฮฑ ฮตฯฮฏฯฮตฮดฮฟ ฮตฮณฮบฮฑฯฮฌฮปฮตฮนฯฮทฯ ฮณฮนฮฑ ฯฯฯฯฮท ฯฮนฮผฯฮฝ ฯฮฑฮผฮทฮปฯฮฝ ฯฮนฮธฮฑฮฝฮฟฯฮฎฯฯฮฝ.
- ฮฃฯฮท ฯฯ ฮฝฮญฯฮตฮนฮฑ, ฮญฮฝฮฑ ฮดฮตฯฯฮตฯฮฟ Conv2d ฮผฮต ฯฮฟ ฯฯฮฎฮผฮฑ ฮตฮนฯฯฮดฮฟฯ 10 ฮฑฯฯ ฯฮฟ ฯฮตฮปฮตฯ ฯฮฑฮฏฮฟ ฯฯฯฯฮผฮฑ ฮบฮฑฮน ฯฮฟ ฯฯฮฎฮผฮฑ ฮตฮพฯฮดฮฟฯ 20 ฮผฮต ฮผฮญฮณฮตฮธฮฟฯ ฯฯ ฯฮฎฮฝฮฑ 5
- ฮฃฯฮท ฯฯ ฮฝฮญฯฮตฮนฮฑ, ฮญฮฝฮฑ ฯฯฯฯฮผฮฑ MaxPool2d
- ฮฮตฮนฯฮฟฯ ฯฮณฮฏฮฑ ฮตฮฝฮตฯฮณฮฟฯฮฟฮฏฮทฯฮทฯ ReLU.
- ฮฮตฯฮฌ ฮฑฯฯ ฮฑฯ ฯฯ, ฮธฮฑ ฮนฯฮฟฯฮตฮดฯฯฮตฯฮต ฯฮฟฮฝ ฯฮฑฮฝฯ ฯฯฮฎฯฮฑ ฯฯฮนฮฝ ฯฮฟฮฝ ฯฯฮฟฯฮฟฮดฮฟฯฮฎฯฮตฯฮต ฯฯฮฟ ฮฯฮฑฮผฮผฮนฮบฯ ฯฯฯฯฮผฮฑ
- ฮคฮฟ Linear Layer ฮธฮฑ ฯฮฑฯฯฮฟฮณฯฮฑฯฮฎฯฮตฮน ฯฮทฮฝ ฮญฮพฮฟฮดฮฟ ฮผฮฑฯ ฯฯฮฟ ฮดฮตฯฯฮตฯฮฟ Linear layer ฮผฮต ฯฮท ฮปฮตฮนฯฮฟฯ ฯฮณฮฏฮฑ ฮตฮฝฮตฯฮณฮฟฯฮฟฮฏฮทฯฮทฯ softmax
ฮฮฎฮผฮฑ 3) ฮฮบฯฮฑฮนฮดฮตฯฯฯฮต ฯฮฟ ฮผฮฟฮฝฯฮญฮปฮฟ
ฮ ฯฮนฮฝ ฮพฮตฮบฮนฮฝฮฎฯฮตฯฮต ฯฮท ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฮตฮบฯฮฑฮฏฮดฮตฯ ฯฮทฯ, ฮฑฯฮฑฮนฯฮตฮฏฯฮฑฮน ฮฝฮฑ ฯฯ ฮธฮผฮฏฯฮตฯฮต ฯฮฟ ฮบฯฮนฯฮฎฯฮนฮฟ ฮบฮฑฮน ฯฮท ฮปฮตฮนฯฮฟฯ ฯฮณฮฏฮฑ ฮฒฮตฮปฯฮนฯฯฮฟฯฮฟฮฏฮทฯฮทฯ.
ฮฮนฮฑ ฯฮฟ ฮบฯฮนฯฮฎฯฮนฮฟ, ฮธฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮฎฯฮตฯฮต ฯฮฟ CrossEntropyLoss. ฮฮนฮฑ ฯฮฟฮฝ Optimizer, ฮธฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮฎฯฮตฯฮต ฯฮฟ SGD ฮผฮต ฯฯ ฮธฮผฯ ฮตฮบฮผฮฌฮธฮทฯฮทฯ 0.001 ฮบฮฑฮน ฮฟฯฮผฮฎ 0.9 ฯฯฯฯ ฯฮฑฮฏฮฝฮตฯฮฑฮน ฯฯฮฟ ฯฮฑฯฮฑฮบฮฌฯฯ Py.Torฯฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ch.
import torch.optim as optim criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
ฮ ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฯฯฮฟฯฮธฮทฯฮทฯ ฮธฮฑ ฯฮฌฯฮตฮน ฯฮฟ ฯฯฮฎฮผฮฑ ฮตฮนฯฯฮดฮฟฯ ฮบฮฑฮน ฮธฮฑ ฯฮฟ ฯฮตฯฮฌฯฮตฮน ฯฯฮฟ ฯฯฯฯฮฟ ฮตฯฮฏฯฮตฮดฮฟ conv2d. ฮฃฯฮท ฯฯ ฮฝฮญฯฮตฮนฮฑ, ฮฑฯฯ ฮตฮบฮตฮฏ, ฮธฮฑ ฯฯฮฟฯฮฟฮดฮฟฯฮทฮธฮตฮฏ ฯฯฮฟ maxpool2d ฮบฮฑฮน ฯฮตฮปฮนฮบฮฌ ฮธฮฑ ฯฮตฮธฮตฮฏ ฯฯฮท ฮปฮตฮนฯฮฟฯ ฯฮณฮฏฮฑ ฮตฮฝฮตฯฮณฮฟฯฮฟฮฏฮทฯฮทฯ ReLU. ฮ ฮฏฮดฮนฮฑ ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฮธฮฑ ฯฯ ฮผฮฒฮตฮฏ ฯฯฮฟ ฮดฮตฯฯฮตฯฮฟ ฮตฯฮฏฯฮตฮดฮฟ conv2d. ฮฮตฯฮฌ ฮฑฯฯ ฮฑฯ ฯฯ, ฮท ฮตฮฏฯฮฟฮดฮฟฯ ฮธฮฑ ฮฑฮฝฮฑฮดฮนฮฑฮผฮฟฯฯฯฮธฮตฮฏ ฯฮต (-1,320) ฮบฮฑฮน ฮธฮฑ ฯฯฮฟฯฮฟฮดฮฟฯฮทฮธฮตฮฏ ฯฯฮฟ ฮตฯฮฏฯฮตฮดฮฟ fc ฮณฮนฮฑ ฮฝฮฑ ฯฯฮฟฮฒฮปฮญฯฮตฮน ฯฮทฮฝ ฮญฮพฮฟฮดฮฟ.
ฮคฯฯฮฑ, ฮธฮฑ ฮพฮตฮบฮนฮฝฮฎฯฮตฯฮต ฯฮท ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฮตฮบฯฮฑฮฏฮดฮตฯ ฯฮทฯ. ฮฮฑ ฮตฯฮฑฮฝฮฑฮปฮฌฮฒฮตฯฮต ฯฮฟ ฯฯฮฝฮฟฮปฮฟ ฮดฮตฮดฮฟฮผฮญฮฝฯฮฝ ฮผฮฑฯ 2 ฯฮฟฯฮญฯ ฮฎ ฮผฮต ฮผฮนฮฑ ฮตฯฮฟฯฮฎ 2 ฮบฮฑฮน ฮธฮฑ ฮตฮบฯฯ ฯฯฯฮตฯฮต ฯฮทฮฝ ฯฯฮญฯฮฟฯ ฯฮฑ ฮฑฯฯฮปฮตฮนฮฑ ฯฮต ฮบฮฌฮธฮต ฯฮฑฯฯฮฏฮดฮฑ 2000.
for epoch in range(2): #set the running loss at each epoch to zero running_loss = 0.0 # we will enumerate the train loader with starting index of 0 # for each iteration (i) and the data (tuple of input and labels) for i, data in enumerate(train_loader, 0): inputs, labels = data # clear the gradient optimizer.zero_grad() #feed the input and acquire the output from network outputs = net(inputs) #calculating the predicted and the expected loss loss = criterion(outputs, labels) #compute the gradient loss.backward() #update the parameters optimizer.step() # print statistics running_loss += loss.item() if i % 1000 == 0: print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 1000)) running_loss = 0.0
ฮฃฮต ฮบฮฌฮธฮต ฮตฯฮฟฯฮฎ, ฮฟ ฮฑฯฮฑฯฮนฮธฮผฮทฯฮฎฯ ฮธฮฑ ฮปฮฌฮฒฮตฮน ฯฮทฮฝ ฮตฯฯฮผฮตฮฝฮท ฯฮปฮตฮนฮฌฮดฮฑ ฮตฮนฯฯฮดฮฟฯ ฮบฮฑฮน ฯฮนฯ ฮฑฮฝฯฮฏฯฯฮฟฮนฯฮตฯ ฮตฯฮนฮบฮญฯฮตฯ. ฮ ฯฮนฮฝ ฯฯฮฟฯฮฟฮดฮฟฯฮฎฯฮฟฯ ฮผฮต ฯฮทฮฝ ฮตฮฏฯฮฟฮดฮฟ ฯฯฮฟ ฮผฮฟฮฝฯฮญฮปฮฟ ฮดฮนฮบฯฯฮฟฯ ฮผฮฑฯ, ฯฯฮญฯฮตฮน ฮฝฮฑ ฮบฮฑฮธฮฑฯฮฏฯฮฟฯ ฮผฮต ฯฮทฮฝ ฯฯฮฟฮทฮณฮฟฯฮผฮตฮฝฮท ฮบฮปฮฏฯฮท. ฮฯ ฯฯ ฮฑฯฮฑฮนฯฮตฮฏฯฮฑฮน ฮณฮนฮฑฯฮฏ ฮผฮตฯฮฌ ฯฮท ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ ฯฯฮฟฯ ฯฮฑ ฯฮฏฯฯ (ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑ backpropagation), ฮท ฮบฮปฮฏฯฮท ฮธฮฑ ฯฯ ฯฯฯฯฮตฯ ฯฮตฮฏ ฮฑฮฝฯฮฏ ฮฝฮฑ ฮฑฮฝฯฮนฮบฮฑฯฮฑฯฯฮฑฮธฮตฮฏ. ฮฃฯฮท ฯฯ ฮฝฮญฯฮตฮนฮฑ, ฮธฮฑ ฯ ฯฮฟฮปฮฟฮณฮฏฯฮฟฯ ฮผฮต ฯฮนฯ ฮฑฯฯฮปฮตฮนฮตฯ ฮฑฯฯ ฯฮทฮฝ ฯฯฮฟฮฒฮปฮตฯฯฮผฮตฮฝฮท ฯฮฑฯฮฑฮณฯฮณฮฎ ฮฑฯฯ ฯฮทฮฝ ฮฑฮฝฮฑฮผฮตฮฝฯฮผฮตฮฝฮท ฯฮฑฯฮฑฮณฯฮณฮฎ. ฮฮตฯฮฌ ฮฑฯฯ ฮฑฯ ฯฯ, ฮธฮฑ ฮบฮฌฮฝฮฟฯ ฮผฮต backpropagation ฮณฮนฮฑ ฮฝฮฑ ฯ ฯฮฟฮปฮฟฮณฮฏฯฮฟฯ ฮผฮต ฯฮทฮฝ ฮบฮปฮฏฯฮท ฮบฮฑฮน, ฯฮญฮปฮฟฯ, ฮธฮฑ ฮตฮฝฮทฮผฮตฯฯฯฮฟฯ ฮผฮต ฯฮนฯ ฯฮฑฯฮฑฮผฮญฯฯฮฟฯ ฯ.
ฮฮดฯ ฮตฮฏฮฝฮฑฮน ฯฮฟ ฮฑฯฮฟฯฮญฮปฮตฯฮผฮฑ ฯฮทฯ ฮตฮบฯฮฑฮนฮดฮตฯ ฯฮนฮบฮฎฯ ฮดฮนฮฑฮดฮนฮบฮฑฯฮฏฮฑฯ
[1, 1] loss: 0.002 [1, 1001] loss: 2.302 [1, 2001] loss: 2.295 [1, 3001] loss: 2.204 [1, 4001] loss: 1.930 [1, 5001] loss: 1.791 [1, 6001] loss: 1.756 [1, 7001] loss: 1.744 [1, 8001] loss: 1.696 [1, 9001] loss: 1.650 [1, 10001] loss: 1.640 [1, 11001] loss: 1.631 [1, 12001] loss: 1.631 [1, 13001] loss: 1.624 [1, 14001] loss: 1.616 [2, 1] loss: 0.001 [2, 1001] loss: 1.604 [2, 2001] loss: 1.607 [2, 3001] loss: 1.602 [2, 4001] loss: 1.596 [2, 5001] loss: 1.608 [2, 6001] loss: 1.589 [2, 7001] loss: 1.610 [2, 8001] loss: 1.596 [2, 9001] loss: 1.598 [2, 10001] loss: 1.603 [2, 11001] loss: 1.596 [2, 12001] loss: 1.587 [2, 13001] loss: 1.596 [2, 14001] loss: 1.603
ฮฮฎฮผฮฑ 4) ฮฮฟฮบฮนฮผฮฌฯฯฮต ฯฮฟ ฮผฮฟฮฝฯฮญฮปฮฟ
ฮฯฮฟฯ ฮตฮบฯฮฑฮนฮดฮตฯฯฮตฯฮต ฯฮฟ ฮผฮฟฮฝฯฮญฮปฮฟ ฮผฮฑฯ, ฯฯฮญฯฮตฮน ฮฝฮฑ ฮดฮฟฮบฮนฮผฮฌฯฮตฯฮต ฮฎ ฮฝฮฑ ฮฑฮพฮนฮฟฮปฮฟฮณฮฎฯฮตฯฮต ฮผฮต ฮฌฮปฮปฮฑ ฯฯฮฝฮฟฮปฮฑ ฮตฮนฮบฯฮฝฯฮฝ.
ฮฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮฎฯฮฟฯ ฮผฮต ฮญฮฝฮฑฮฝ ฮตฯฮฑฮฝฮฑฮปฮฎฯฯฮท ฮณฮนฮฑ ฯฮฟ test_loader ฮบฮฑฮน ฮธฮฑ ฮดฮทฮผฮนฮฟฯ ฯฮณฮฎฯฮตฮน ฮผฮนฮฑ ฯฮฑฯฯฮฏฮดฮฑ ฮตฮนฮบฯฮฝฯฮฝ ฮบฮฑฮน ฮตฯฮนฮบฮตฯฯฮฝ ฯฮฟฯ ฮธฮฑ ฯฮตฯฮฌฯฮฟฯ ฮฝ ฯฯฮฟ ฮตฮบฯฮฑฮนฮดฮตฯ ฮผฮญฮฝฮฟ ฮผฮฟฮฝฯฮญฮปฮฟ. ฮ ฯฯฮฟฮฒฮปฮตฯฯฮผฮตฮฝฮท ฮญฮพฮฟฮดฮฟฯ ฮธฮฑ ฮตฮผฯฮฑฮฝฮนฯฯฮตฮฏ ฮบฮฑฮน ฮธฮฑ ฯฯ ฮณฮบฯฮนฮธฮตฮฏ ฮผฮต ฯฮทฮฝ ฮฑฮฝฮฑฮผฮตฮฝฯฮผฮตฮฝฮท ฮญฮพฮฟฮดฮฟ.
#make an iterator from test_loader #Get a batch of training images test_iterator = iter(test_loader) images, labels = test_iterator.next() results = net(images) _, predicted = torch.max(results, 1) print('Predicted: ', ' '.join('%5s' % classes[predicted[j]] for j in range(4))) fig2 = plt.figure() for i in range(4): fig2.add_subplot(rows, columns, i+1) plt.title('truth ' + classes[labels[i]] + ': predict ' + classes[predicted[i]]) img = images[i] / 2 + 0.5 # this is to unnormalize the image img = torchvision.transforms.ToPILImage()(img) plt.imshow(img) plt.show()










