์ง๋ฌธ์ด ์๊ฑฐ๋ ๋์ ๋ฐ ์ง์์ด ํ์ํ ๊ฒฝ์ฐ ๋น์ฌ์
ํฌ๋ผ .
๊ธฐ๋ฅ ์์ฒญ์ ์ ์ถํ๋ ๊ฒฝ์ฐ ์ ๋ชฉ ์์ [๊ธฐ๋ฅ ์์ฒญ]์ ์
๋ ฅํ์ญ์์ค.
๋ฒ๊ทธ ๋ณด๊ณ ์๋ฅผ ์ ์ถํ๋ ๊ฒฝ์ฐ ๋ค์ ์ธ๋ถ ์ ๋ณด๋ฅผ ์
๋ ฅํ์ญ์์ค.
์ต๊ทผ์ ์ ๋ PyCharm์ด torch.zeros
๋ํ ์๋ ์์ฑ์ ๋ง๋ค ์ ์๋ค๋ ๊ฒ์ ์์๋์ต๋๋ค.
ํ์ด์ฐธ ๋ผ๊ณ
Cannot find reference 'zeros' in '__init__.py'
์ ์ ํํค์ณ๋ณด๋ ๊นจ์ง Type Hints
.
์ด๋ฌํ ๋ณํ๋ก๋ถํฐ,
https://github.com/pytorch/pytorch/commit/30ec06c140b0428d591e2f5007bc8046d1bdf7c4
https://github.com/pytorch/pytorch/wiki/Breaking-Changes-from-Variable-and-Tensor-merge
ํนํ https://github.com/pytorch/pytorch/commit/30ec06c140b0428d591e2f5007bc8046d1bdf7c4#diff -14258fce7c17ccb97b488e64373b0803R308 @
์ด ์ค์ ๋ง์ IDE์ ๋ํด Type Hints
๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์๋ torch.zeros
๋ torch/_C/__init__.py
์์์ต๋๋ค.
ํ์ง๋ง torch/_C/_VariableFunctions
https://gist.github.com/kimdwkimdw/50c18b5cf72c69c2d01bb4146c8a2b5c
์ด๊ฒ์ ์ด ๋ฒ๊ทธ์ ๋ํ ๊ฐ๋
์ฆ๋ช
์
๋๋ค.
main.py
๋ฅผ ๋ณด๋ฉด
import T_B as torch
torch.p2() # IDE can detect `p2`
torch.p1 # IDE cannot detect `p1`
๋น์ฌ์ ์ถ๋ ฅ์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ผ์ญ์์ค.
ํ๊ฒฝ ์์ง ์คํฌ๋ฆฝํธ
(๋๋ ์๋ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์๋์ผ๋ก ์์ฑ).
๋ค์์ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ์ ธ์ ์คํํ ์ ์์ต๋๋ค.
wget https://raw.githubusercontent.com/pytorch/pytorch/master/torch/utils/collect_env.py
# For security purposes, please check the contents of collect_env.py before running it.
python collect_env.py
PyTorch๋ฅผ ์ค์นํ ๋ฐฉ๋ฒ(conda, pip, source):
conda, pip, source์ ๋ํ ๋ชจ๋ ๊ฒฝ์ฐ.
์ฌ์ฉํ ๋น๋ ๋ช ๋ น(์์ค์์ ์ปดํ์ผํ๋ ๊ฒฝ์ฐ):
์ด๋ค ๊ด๋ จ ํฌ์ธํธ? #4568
๊ฐ์ ๋ฌธ์ , pycharm์ pytorch0.4๋ฅผ ์ฌ์ฉํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ชจ๊ฐ ์์ต๋๋ค. " ์ฐธ์กฐ๋ฅผ ์ฐพ์ ์ ์์ " ๋๋ " ํธ์ถ ํ ์ ์์ " ๋๋ฌธ์ ๊ฑฐ์ ๋ชจ๋ ํญ๋ชฉ์ ๋ฐ์ค์ด ๊ทธ์ด์ ธ ์์ต๋๋ค.
torch.tensor
, torch.max
๋ฐ loss.backward
๋ํ ์๋ ์์ฑ, ๋น ๋ฅธ ์ ์ ๋ฐ ๋น ๋ฅธ ๋ฌธ์๊ฐ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ์ ์ฌํญ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์!
PyCharm์ ๊ธฐ๋ฅ ๊ฒ์์ด ๊ฐ์ ๋ ์ ์์ ๊ฒ ๊ฐ์ง๋ง PyTorch ์ธก์์ ๋ฌด์์ ํ ์ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. torch.tensor
๋ฅผ ์๋ก ์ฌ์ฉํ๋ฉด help(torch.tensor)
๋ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ค๊ณ dir(torch)
๋ "tensor"๋ฅผ ๊ตฌ์ฑ์์ผ๋ก ํ์ํฉ๋๋ค.
@zou3519
์๋๋ ์ข์ ์ฝ๋ ์คํ์ผ์ด ์๋๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
for name in dir(_C._VariableFunctions):
globals()[name] = getattr(_C._VariableFunctions, name)
https://github.com/pytorch/pytorch/commit/30ec06c140b0428d591e2f5007bc8046d1bdf7c4์์
globals()[name]
๋ Pythonic
๋ฐฉ์์ด ์๋๋๋ค. PyCharm๋ฟ๋ง ์๋๋ผ Python ์ฝ๋ ์คํ์ผ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
_VariableFunctions
๋ ํด๋์ค์ผ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ด ๋ฌธ์ ์ ๋ํด PR์ ํ๋ ค๊ณ ํฉ๋๋ค. ๊ฒํ ํ์๊ฒ ์ต๋๊น? @zou3519
@kimdwkimdw global() ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋๋ ๋ฌด์์ด ๋ ๋์์ง์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ค, PR์ ์ ์ถํด ์ฃผ์๋ฉด ์ดํด๋ณด๊ฒ ์ต๋๋ค. :)
PyCharm์ ๊ธฐ๋ฅ ๊ฒ์์ด ๊ฐ์ ๋ ์ ์์ ๊ฒ ๊ฐ์ง๋ง PyTorch ์ธก์์ ๋ฌด์์ ํ ์ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
PyCharm์ ๋ค๋ฅธ ํจํค์ง์์ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์ด ์๋ค๋ ์ ์ ์๊ณ ์ถ์์ต๋๋ค. PyCharm์ด ๋ค๋ฅด๊ฒ ์๋ํด์๋ ์ ๋๋ค๋ ๋ง์ ์๋์ง๋ง ์ด ๋ฌธ์ ๋ ๋๋ฌธ ๊ฒฝ์ฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์ ๋ ์ฃผ๋ก ์ด ํ์ผ๋ค์ ์์ ํ๊ณ ์์ต๋๋ค.
tools/autograd/gen_autograd.py
tools/autograd/templates/python_torch_functions.cpp
torch/lib/include/torch/csrc/Module.cpp
C ํ์ฅ์ ์์ฑํ ๋ ๋ณ๊ฒฝ๋ ์ฌํญ์ ํ์
ํ๋ ค๊ณ ํฉ๋๋ค.
๊ณง ํ๋ณดํ๊ฒ ์ต๋๋ค.
์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๋ด ํฌํฌ์์ ์์ ์์ ๋ฅผ ๋ง๋ค์์ต๋๋ค.
์๋ ์์ฑ์ ๋จผ์ ์ฌ์ฉํ๊ณ ์ถ์ ์ฌ๋์ ์๋๋ฅผ ์๋ํด ๋ณด์ธ์.
git clone -b pytorch-interface https://github.com/kimdwkimdw/pytorch.git
/Users/USERNAME/Library/Caches/PyCharm*/python_stubs/
project interpreter
ํ์ธpull request
์ ์ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ์ปค๋ฐ์ ๋ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์์ ์ค๋ช
์ ๋ฐ๋ผ ์ค์น์ ์คํจํ์ต๋๋ค.
๊ฐ๋จํ๊ฒ ์ค์นํ๋ ๋ฐฉ๋ฒ ์์๊น์?
๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋๋ ํญ์ pytorch์ pycharm์ ์ฌ๋ํ์ต๋๋ค. ๊ทธ๋ฐ ๋ถ๋๋ฌ์ด ์ผ๊ณผ ์ ์ด์ธ๋ฆฌ์ง ์์ต๋๋ค :(
์
๋ฐ์ดํธ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
pycharm๊ณผ ํจ๊ป ํ์ด์ฌ ์ฝ์์์ ๋์ผํ ์ฝ๋๋ฅผ ์ฌ์ฉํ ๋ ์ด๊ฒ์ ์ ๋ง ์ด์ํฉ๋๋ค. ์ ์์ด์ง๋ง ํธ์ง๊ธฐ์์๋ ๊ทธ๋ ์ต๋๋ค. ใ ใ "โฆ
๋ง์ ์ ์ ๋ถ๋ค์ด ์์ฒญํด์ฃผ์ ์ ์ฐ์ ์์๋ฅผ ์ฌ๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค... ๋ ์์ธํ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ง์ ์ ์ ๋ค์ด ์์ฒญํ๊ณ ์์ต๋๋ค.... ์ด๋ฒ ์ฃผ๋ง์ ํ ๋ฆฌํ์คํธ๋ฅผ ํด์ผ๊ฒ ์ต๋๋ค.
๋ด ์ฝ๋๋ฅผ ํ์ฌ master
๋ถ๊ธฐ์ ๋ณํฉํ์ต๋๋ค.
Type Hints
์(๋) ์ง๊ธ ์ด์ ์์ต๋๋ค.
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install
์ฒดํฌ์์ ํ๋ณด - https://github.com/pytorch/pytorch/pull/8845
์ฐธ์กฐ @zou3519
@kimdwkimdw ์์ค์์ pytorch๋ฅผ ๋ค์ ์ค์นํด์ผ ํ๋์? Windows ํ๋ซํผ์์ ์ฝ๊ฒ ๊ฐฑ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
@541435721
๋ค, ๊ทธ๋ ๊ฒ ํด์ผ ํฉ๋๋ค. https://github.com/pytorch/pytorch#install -pytorch ์ด ํ์ด์ง๋ฅผ ํ์ธ
๋๋ ๊ทธ๊ฒ์ ๊ตฌ์ถํ๋ ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด ์๋์ง ๋ชจ๋ฅธ๋ค.
Pycharm(2018.1, ์ฌ๊ตฌ์ถ๋ ์บ์ ํฌํจ)์ ๋ํด์๋ ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋น์ ์ @kimdwkimdw์ ํ ์์ฒญํ์ง pytorch ๋ง์คํฐ๋ฅผ ํ์ธํด์ผํฉ๋๋ค. pull ์์ฒญ์ ์์ง pytorch ๋ง์คํฐ์ ๋ณํฉ๋์ง ์์์ต๋๋ค.
์ด๊ฒ์ PR์ ๋๋ค: https://github.com/pytorch/pytorch/pull/8845.
์, ์ด๊ฒ์ด ๋ด๊ฐ ํ ์ผ์ ๋๋ค.
git remote add kimdwkimdw https://github.com/kimdwkimdw/pytorch.git
git fetch kimdwkimdw
git checkout --track kimdwkimdw/interface-0
git submodule update --init
CC=gcc-5 CXX=g++-5 CFLAGS="-march=native -O2" CXXFLAGS="-march=native -O2" python setup.py build
python setup.py install --optimize=1 --skip-build
@nlgranger python ์คํ ์ ์๋์ผ๋ก ์ญ์ ํด์ผ ํฉ๋๋ค. '์บ์ ๋ฌดํจํ'๋ก ์ญ์ ํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ๋ฅผ ์ค์ ํ ๋ Pycharm์ ํ์ด์ฌ ์คํ ํ์ผ์ ์ด๊ธฐํํฉ๋๋ค.
python ์คํ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ญ์ ํ ํ Pycharm์ ๋ค์ ์์ํฉ๋๋ค.
PyCharm์ ํ์ด์ฌ ์คํ ์ ๋ค์ ์์ฑํฉ๋๋ค.
๋ฑํ ๋ฌ๋ผ์ง๊ฑด ์์ง๋ง ์ ์ค์ ์ผ์๋ ์์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋์ด ์๋ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆด ์ ์์ต๋๊น?
ํ์ด์ฌ ์คํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. ํ ์น๋ฅผ ํด๋ฆญํ๋ฉด ์คํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
@kimdwkimdw ์บ์๋ฅผ ๋ค์ ์ค์นํ๊ณ ์ญ์ ํ์ง๋ง ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค.
์ด invalidate Caches
ํตํด PyCharm ์บ์๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
MacOS์์๋ ~/Library/Caches/PyCharm2018.1/python_stubs/
ํด๋๋ฅผ ์๋์ผ๋ก ์ญ์ ํด์ผ ํฉ๋๋ค.
๋ ๋ค๋ฅธ ์ต์
์ด ์์ต๋๋ค. ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ์ธํฐํ๋ฆฌํฐ ์ค์ ์ ๋ณ๊ฒฝํ๋ฉด PyCharm์ python stubs
@541435721 @nlgranger
์ด๊ฒ์ด ๋ด๊ฐ ํ ์ผ์
๋๋ค (์บ์ ๋ฌดํจํ, pycharm ์ค์ง, rm .PyCharm2018.1/system/python_stubs/* -rf
).
BTW ์ค์ํ ๊ฒฝ์ฐ์ ๋๋นํ์ฌ python 3์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค(PR์์ ์ผ๋ถ python2 ํ
์คํธ๊ฐ ํ์๋จ).
@kimdwkimdw
๋๋ ์ด๊ฒ์ ์ง์นจ์ผ๋กํ๊ณ ๋ด OS๋ windows10์ด์ง๋ง์ด ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค.
@kimdwkimdw ํ ์ ์์ด์! ๊ฐ์ฌ ํด์!
๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์๊ธฐ ๋๋ฌธ์ @kimdwkimdw ์ ์์ ์ฌํญ์ด ์ ์๊ฒ ํจ๊ณผ๊ฐ ์๋ค๋ ์ฌ์ค์
source path/to/my/venv/bin/activate
git clone https://github.com/kimdwkimdw/pytorch.git
cd pytorch
git checkout interface-0
git submodule update --init
MACOSX_DEPLOYMENT_TARGET=10.13 CC=clang CXX=clang++ python setup.py install
์คํ ์ ์๋์ผ๋ก ์ญ์ ํ์ง๋ง ํ์ํ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ด์จ๋ ์ ์ด๋ ๋ด ์์คํ ์์๋ ์๋ํฉ๋๋ค.
๊ทธ๋ฌ๋ torch.float32
(๋ฐ ๊ธฐํ ๋ฐ์ดํฐ ์ ํ) ๋ฐ torch.backends.cudnn
๋ชจ๋ PyCharm์์ ์ฌ์ ํ ํด๊ฒฐ๋์ง ์์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค(์ ์ด๋ ์ ๊ฒฝ์ฐ์๋).
@shianiawhite ์ข์ ์ง์ ์ ๋๋ค. ๊ฐ์ฌ ํด์. Pull Requests์ ๋ ๋ง์ ์ ๋ฐ์ดํธ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@zou3519
@kimdwkimdw ์ PR์ ์ฑ๊ณต์ ์ผ๋ก ๋น๋ํ๊ณ python_stub
in ~/.PyCharmCE2018.1/system
์๋์ผ๋ก ์ญ์ ํ๋๋ฐ๋ ์๋ํ์ง ์์์ต๋๋ค.
๋ค์ ๋ฌผ์ด๋ด์ ์ฃ์กํ์ง๋ง ์ด๊ฒ์ ๋ํ ์์์ด ์์ต๋๊น?
์ฌ๊ธฐ jetbrains https://youtrack.jetbrains.com/issues/PY?q=pytorch ์์ ๋ฌธ์ ๋ฅผ ์ฌ๋ ๋ฐ ๋์์ด ๋ ๊น์?
Ubuntu 16.04 ๋ฐ PyCharm 2017.3์์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด์ํ ์ ์ ํ์ด์ฌ ์ฝ์์์ ์คํํ ๋ ์๋ ์์ฑ์ด ์ ๋๋ก ํ์๋๋ค๋ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ ํธ์ง๊ธฐ์์ ๋์ผํ๊ฒ ์คํํ๋ฉด ์๋ํ์ง ์์ต๋๋ค.
์ ๋ ํ์ด์ฌ 3.6.6๊ณผ PyTorch 0.41์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. pip์ cuda 9.2๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นํ์ต๋๋ค.
Window7 PyCharm2018, Win10 PyCharm2018, Win10 VS2017, Win10 Spyder์์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
pytorch0.4.0 ๋ฐ pytorch0.4.1์ ์ฌ์ฉํ๋ ค๊ณ ํ๋๋ฐ ๋ ๋ค ์๋ ์์ฑ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
ipython๋ง ์๋ ์์ฑ์ ์ฌ๋ฐ๋ฅด๊ฒ ํ์ํฉ๋๋ค.
๋์์ฃผ์ธ์
PyCharm youtrack์์ ๋ฌธ์ ๋ฅผ ์ด์์ต๋๋ค. ์ด์ฉ๋ฉด ๊ทธ๋ค๋ ๋์ธ ์ ์์ต๋๋ค.
Windows 10์์ pytorch0.4.1๊ณผ ํจ๊ป VS2017 ๋ฐ PyCharm2018.2๋ฅผ ์๋ํ์ง๋ง ์๋ ์์ฑ์ด ์๋ํ์ง ์์ต๋๋ค.
PyCharm-2018.2์ ํจ๊ป pip์ ์ํด ์ค์น๋ PyTorch-0.4.1์๋ ์ฌ์ ํ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ฌ๋๋ค์ด ์ฌ๊ธฐ์์ ํฌํํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค. https://youtrack.jetbrains.com/issue/PY-31259
๊ทธ๋์ ์์ ์ด ๋ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ต๋๋ค
์ฌ๋ณด์ธ์!
์ ๋ PY-31259์ ์์์ธ์
๋๋ค.
PyCharm์ ์ ์ ๋ถ์์ ์ํํ๋ ๋์ ์ฌ์ฉ์ ์ฝ๋๋ฅผ ์คํํ์ง ์์ต๋๋ค(์์ธ๋ ํ๊ฒฝ์ ์ฝ๊ฒ ์กฐ์ฌํ ์ ์๋ ์ฝ์). ๋ฐ๋ผ์ ์์ฑ์ ์ ์ธํ๋ ๋๋ถ๋ถ์ ๋์ ๋ฐฉ๋ฒ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
@sproshev ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. @kimdwkimdw ์ pull request https://github.com/pytorch/pytorch/pull/8845๊ฐ ์๋ํ๋ ์ด์ ์ ๋ํด ์ค๋ช ํด ์ฃผ ์๊ฒ ์ต๋๊น?
์ปจํ ์คํธ์ ๊ฒฝ์ฐ pytorch๋ ๊ฐ์ ธ์ฌ ๋ ์์ฑ์ ๋์ ์ผ๋ก ํ ๋นํฉ๋๋ค. @kimdwkimdw ์ pull ์์ฒญ์ ์ด๋ฅผ ์ ์งํ์ง๋ง pycharm์ด ๋ฐ๋ฅผ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ํํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ํฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ(์ ์ด๋ Python 3์ ๊ฒฝ์ฐ)์ .pyi ์คํ
์ ์์ฑํ๋ ๊ฒ์
๋๋ค.
๋น ๋ฅธ ํ
์คํธ๋ ๊ทธ๊ฒ์ด ์ ์๋ํ ๊ฒ์์ ๋ํ๋ด๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ ๋ PyCharm ์ฌ์ฉ์๋ ์๋์ง๋ง ๋งค์ฐ ๋ง์กฑํ ์ฌ๋์ด ์ถฉ๋ถํ๋ค๋ฉด native_functions.yaml๊ณผ ์น๊ตฌ๋ค๋ก๋ถํฐ ์์ฑํ ์ ์๋์ง ์ ์ ์์ต๋๋ค.
@t-vi ๋ฌด์จ ๋ง์ ํ๊ณ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์ด๊ฒ์ด ๊ณ์ํด์ ๊ณ์๋๊ณ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ .pyi๋ฅผ ์์ฑํ์ญ์์ค! :NS
๋ฐ๋ผ์ ๋ฉ์ธ ๋ชจ๋์ ์ถฉ๋ถํ ์ฌ์ ๋ณด์
๋๋ค.
์ด๋ค ์ด์ ๋ก๋ ๊ทธ๋ฅ ๊ฐ์ง๊ณ ์๋ ๊ฒ๋ง์ผ๋ก๋
class Tensor: ...
<strong i="6">@overload</strong>
def randn(size: Tuple[int, ...], *, out: Optional[torch.Tensor], dtype: dtype=None, layout: layout=torch.strided, device: Union[device, str, None]=None, requires_grad: bool=False) -> Tensor: ...
__init__.pyi
PyCharm์ด a = randn((1,2))
์ดํ์ a
๊ฐ torch.Tensor
ํด๋์ค์์ ์ ์ถํ๋ ๊ฒ์ ํ์ฉํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. :(
(์ค์ ๋ก ํด๋์ค์๋ ์ฃผ์์ด ์์ง๋ง a : torch.Tensor = ...
์ฃผ์์ ์ฒ ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ๋ฉ๋๋ค.)
์๋ํ๋ ค๋ ๊ฒฝ์ฐ ์ฌ๊ธฐ์ pyi๋ฅผ ๊ฒ์ํ์ต๋๋ค. https://gist.github.com/t-vi/0d0ae013072f96f50fa11fbc2287e33b
๋ค์ ๋งํ์ง๋ง, PyCharm์ด ๋ฐํ ์ ํ์ ์๋ณํ์ง ์๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ์ด์ ๋ฅผ ์๊ณ ์๋ค๋ฉด ๊ณต์ ํด ์ฃผ์๋ฉด ๋๋จํ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
@t-vi ์๋ฃจ์ ์ VS ์ฝ๋์์๋ ์๋ํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
ZongyueZhao, ํผ๋๋ฐฑ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์์ง VS ์ฝ๋๋ก ์๋ํ์ง ์์์ง๋ง ๋ฐํ ์ ํ์ ํฌํจํ์ฌ pyi๊ฐ ์๋ํ๋ฉด ํด๋น ์์ฑ์ ์ํ ํจ์น๋ฅผ ์ ์ถํ๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค. __init__
๊ฐ) ๋์์ด ๋์์ต๋๋ค! ๋๋ "main"์ด๋ผ๋ conda env๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ๋ด๊ฐ ํ ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
pushd /Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/torch
rm __init__.py
wget https://gist.githubusercontent.com/t-vi/0d0ae013072f96f50fa11fbc2287e33b/raw/e0e3878fa612c5a4557ec76c011fd5f9453ff0e8/__init__.py
popd
์บ์๋ฅผ ๋ค์ ์์ฑํ ํ์๊ฐ ์์์ต๋๋ค.
Tensor ๋ฐํ ์ ํ์ ์ธ์ํ์ง ๋ชปํ๋ ์ด์ ๋ ํ์ผ์ ๊ตฌ๋ฌธ ์ค๋ฅ์ ๊ด๋ จ์ด ์์ต๋๋ค. PyCharm์์ ํ์ผ์ ์ด๋ฉด ๊ทธ ์ค ๋ช ๊ฐ์ง๊ฐ ํ์๋ฉ๋๋ค.
์ค๋ฅ๊ฐ ์๋ ์ค์ ์ญ์ ํ๋ฉด ์๋ ์์ฑ์ด ๋ฉ๋๋ค.
๋ด๊ฐ ์์์ฐจ๋ฆฐ ๋ ๋ค๋ฅธ ์ ์ Tensor ํด๋์ค ๋ฉค๋ฒ ํํธ๊ฐ ์ํ ์ฐธ์กฐ์ธ ๋ฐํ -> Tensor์ด๋ฏ๋ก PyCharm์์๋ ์ธ์๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ํด๊ฒฐ์ฑ ์ Tensor ํด๋์ค์ ๋ฉ์๋์ ๋ํด -> Tensor ๋์ -> "Tensor"๋ฅผ ์ํํ๋ ๊ฒ์ ๋๋ค(https://www.python.org/dev/peps/pep-0484/#forward-references).
@yaroslavvb ๊ฐ์ฌํฉ๋๋ค. ๋ฐ๋ก ์ ๊ฐ ๋์น๊ณ ์๋ ๋ถ๋ถ์ด์์ต๋๋ค!
๊ฐ์์ฑ์ ์ํด ๋ฒํ. ์ค์ ๋ก PyCharm ์ฌ์ฉ์์๊ฒ๋ ์์ฒญ๋ ๊ฑฐ๋์ ๋๋ค. ์ ๋ tf/keras ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ๋์์ผ๋ก PyTorch๋ฅผ ํ๊ฐํ๊ณ ์์๊ณ ์ด ๋ฌธ์ ๋ ์ฐ๋ฆฌ์๊ฒ ๋ฐฉํด ์์์ ๋๋ค.
์ ๋ pytorch 0.4.1
ํฉ๋๋ค.
์ด์ ๋ํ ๊ตฌ์ฒด์ ์ธ ํด๊ฒฐ์ฑ
์ด ์์ต๋๊น? pip๋ฅผ ์ฌ์ฉํ์ฌ pytorch๋ฅผ ์ค์นํฉ๋๋ค. pycharm์๋ ์ธ์ํ ์ ์๋ pytorch ๋ด์ฅ ํจ์ torch.xxx
๊ฐ ๋๋ฌด ๋ง์ต๋๋ค.
๊ณ ์น ์ ์๋ ๊ฒฝ์ฐ. ๋ชจ๋ pytorch ๊ธฐ๋ฅ์ ์ ์ํ๊ณ ํ๋ ์์ํฌ ๋ด ํ์์ ๋๋ ๋์ฒด IDE๋ฅผ ์ ์ํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๊น(์: pytorch ๊ธฐ๋ฅ์ ์ ์๋ก ์ด๋ํ๋ Ctrl+B).
๊ฐ์ฌํฉ๋๋ค.
ํ๋ณด(@t-vi) ํ์ค ๋ถ ๊ณ์ ๊ฐ์? ์ ๋ ์ง๊ธ PyTorch nightlies๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ ๊ทธ๋ ์ด๋ํ ๋๋ง๋ค ์ด ์์ ์ ์ํํ๋ ๊ฒ์ด ์ฝ๊ฐ ๋ฒ๊ฑฐ๋กญ์ต๋๋ค...
๋น๋ ํ๋ก์ธ์ค ์ค์ PYI๋ฅผ ์์ฑํ๋ ์๊ธฐ์ ๋ฐฉ๋ฒ์ ๋ํ ์ข์ ์๋ฃจ์
์ ์ป๊ธฐ ์ํด ํต์ฌ ๊ฐ๋ฐ์์ ์ด ๋ฌธ์ ์ ๋ํด ์ ๊ทน์ ์ผ๋ก ๋
ผ์ํ๊ณ ์์ต๋๋ค. ์ด๋ ค์ด ๋ถ๋ถ์ ํ์ด์ฌ ์ ์ ๋นํธ์ ์ ๋ณด๋ฅผ _C
๋นํธ์ ์ ๋ณด์ ๋ณํฉํ๋ ๊ฒ์
๋๋ค. ์ฐ๋ฆฌ๋ ์ข์ ํด๊ฒฐ์ฑ
์ ์ฐพ๊ธฐ ์ํด ๋
ธ๋ ฅํ๊ณ ์์ผ๋ฉฐ ๊ณง PR์ ํ๊ธฐ๋ฅผ ํฌ๋งํ์ง๋ง ์๋ง๋ ๋ฐ๋ณต ์์
์ด ํ์ํ ๊ฒ์
๋๋ค.
๋์ ์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์๋ค๋ฉด ์ฃผ์ ํ์ง ๋ง๊ณ ์ ์๊ฒ ๋ฉ์ผ๋ก ์ฐ๋ฝํด ์ฃผ์ญ์์ค.
__init__.py๋ฅผ ๊ต์ฒดํ๋ ๊ฒ์ ์ข์ ํด๊ฒฐ์ฑ ์ด ์๋๋๋ค. ์๋ฅผ ๋ค์ด @t-vi ์ ์์ง ์์ ๋ค์์ ์ฌ์ฉํ ๋
a = torch.cat([a,b], dim=-1)
PyCharm์ "out" ๋งค๊ฐ๋ณ์๊ฐ ๋๋ฝ๋์์ง๋ง "out" ๋งค๊ฐ๋ณ์๋ ์ ํ ์ฌํญ์ด๋ผ๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค.
๋ค๋ฅธ ๊ฒฝ์ฐ์๋,
x = torch.empty(10, 2)
์ด ์ฝ๋ ์ค์ ๋ฉ์๋๊ฐ (*sizes, ...)๋ฅผ ๋ฐ์๋ค์ผ ์ ์๊ธฐ ๋๋ฌธ์ ์ ํํ์ง๋ง PyCharm์ ์๋ชป๋ ๋งค๊ฐ๋ณ์์ ๋ํด์๋ ๊ฒฝ๊ณ ํฉ๋๋ค. ๋๋ฌด ๋ง์ ์ด์ํ ๊ฒฝ๊ณ ์ ํจ๊ป ๋ง์นจ๋ด ์ฝ๋ ๊ฒ์ฌ ์ค์ ์์ "torch.*"๋ฅผ ๋ฌด์ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค...
@hitvoice ์ง์ ํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
์์ ์ ์ ์ ํ ํ์ด๋ฅผ ์ป๊ธฐ ์ํ ๋งค์ฐ ๊ฑฐ์น ์ฃผ๋จน ์ฐ๋ฅด๊ธฐ์ด๋ฏ๋ก ๊ทํ์ ํผ๋๋ฐฑ์ ๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค! ๋ค์ ๋ฐ๋ณต์์ ๊ฒ์ฌ๋ฅผ ๋ค์ ์์ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
Optional[out] ์ out : Optional[Tensor]=None
์ด์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ง์ต๋๊น? ์ฝ๊ฒ ๊ณ ์น ์ ์์ต๋๋ค.
๋น์ด ์๋ ๊ฒฝ์ฐ์๋ varargs๋ ํ์ฉํ๊ธฐ ์ํด ํ๋์ ๋ชฉ๋ก ์ธ์๋ง์ผ๋ก ์ ์ธ์ ๋ถํ ํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ ๋ ๋ณต์กํฉ๋๋ค(ํ ๋ฒ์ ํ์ด์ฌ ์ธ์๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๋ C ์ฝ๋๋ฅผ ๋๋ฌด ์ค๋ซ๋์ ์์ํ์ต๋๋ค). ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ํ์คํ ํ๋ฅญํ ์ ํ ํํธ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ต์ ์ ๋คํ๊ณ ์์ต๋๋ค.
์๋
ํ์ธ์,
__init__.pyi
์
๋ฐ์ดํธํ์ผ๋ฉฐ ํ์ ์์ผ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
์ด๊ฒ์ด ๋๋ต์ ์ผ๋ก ํจ๊ณผ๊ฐ ์๋ค๊ณ ์๊ฐํ๋ค๋ฉด ์ฝ๋๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ๊ฒ์ด๋ฉฐ(๋น๋ ์ดํ์ ์์ด์ผ ํจ) ์ฐ๋ฆฌ๋ (๊ฑฐ์) PR์ ๊ฐ๊ฒ ๋ฉ๋๋ค.
@t-vi ์ข์๋ณด์ ๋๋ค. ์ง๊ธ๊น์ง ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ ์๋ํฉ๋๋ค.
ํ์ด์ฌ ์ ์ ํจ์ ํํธ(btrifact, einsum)๋ฅผ ์์ฑํ๋ ์ด์ ๊ฐ ๋ฌด์์ธ์ง ๊ถ๊ธํฉ๋๋ค. ๋๋ ์ผ๊ฐ ๋น๋๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ํํธ์์ด ๋๋ฅผ ์ํด ์ผํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@elliotwaite ๋ด (์งง์) ์คํ์์ x = einsum('ii', a); x.
์ ๋ํ ์ ํ ํํธ๋ฅผ ์ถ๊ฐํ๊ณ ์ด์ x
๋ํ ํ
์ ๋ฉ์๋๋ฅผ ๊ฐ์ ธ์ค์ง ์๋ ํ ๊ฒฐ๊ณผ์ ๋ํ ์๋ ์์ฑ์ ์ป์ง ๋ชปํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ํ pyi๊ฐ ์๋ ๊ฒ์ด pyi์ ํฌํจ๋์ง ์์ ํญ๋ชฉ์ด ์ฒ๋ฆฌ๋๋ ๋ฐฉ์์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ด๊ฐ ์ดํดํ๋ ํ(๋ณ๋ก ์ข์ง๋ ์์) ์ด๊ฒ์ด ๋ฏธ๋ฌํจ์ ๊ทผ์์
๋๋ค.
@t-vi ์, ์๊ฒ ์ต๋๋ค. ๋๋ pyi ํ์ผ์ ์์ ํ ํฌํจํ๋ ๊ฒ๊ณผ ํฌํจํ์ง ์๋ ๊ฒ ์ฌ์ด์์๋ง ํ ์คํธํ์ต๋๋ค. ๋ง์ต๋๋ค. pyi ํ์ผ์ ํฌํจํ๊ณ einsum ํํธ ์ค๋ง ์ฃผ์ ์ฒ๋ฆฌํ๋ฉด ์๋ ์์ฑ ๊ธฐ๋ฅ๋ ์ค๋จ๋ฉ๋๋ค. ์ค๋ช ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
@t-vi ๋จ์ผ ์ธ์๋ฅผ torch.tensor()์ ์ ๋ฌํ ๋๋ง "Parameter(s) unfilled" ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค.
@elliotwaite ์ง์
ํ
์๋ ๋๋ฌด ํน๋ณํ๋ฏ๋ก ์ ์ ํ ์๋ช
์ ์๋์ผ๋ก ํฌํจํด์ผ ํ ๊ฒ์
๋๋ค.
PR์ ์
๋ฐ์ดํธํ๊ฒ ์ต๋๋ค. ์์ ๋ ์
๋ฐ์ดํธํ๋ฉด ๋ ๋ง์ ๋ฌธ์ ๋ฅผ ์ฐพ์ ์ ์์ต๋๊น? (๊ทธ๊ฒ์ ๊ฝค ์๋์ด๋ฉฐ ๋น์ ์ด ๊ทธ๊ฒ์ ๋๋ฆฌ๋ ๋ฐ ๋์์ด๋๋ค๋ฉด ๋๋ ๊ทธ๊ฒ์ ํ ๊ฒ์
๋๋ค.)
@t-vi ๋ํ torch.Tensor.view()์ ๋ํด "์๊ธฐ์น ์์ ์ธ์" ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค.
torch.randn(2, 2).view(1, 1, 2, 2)
๋ํ ๋ชจ๋ ๋ฌธ์๋ฅผ ๊ฒ์ํ๊ณ ๋ชจ๋ "tensor.*" ๋ฌธ์์ด์ ์ถ์ถํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์๋ ์์ฑ์ ์ํด ํ
์คํธํ์ต๋๋ค. ๋ค์์ ์๋ ์์ฑ์ด ์์ง ์๋ํ์ง ์๋ ๋ชฉ๋ก์
๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ๋ ์ค์ ๋ก ์ก์ธ์ค ๊ฐ๋ฅํ์ง ํ
์คํธํ๊ณ ํ์ธํ๊ธฐ ์ํด print() ํจ์๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
https://github.com/elliotwaite/pytorch_typehints/blob/master/no_autocomplete.py
@elliotwaite ๋ง์ต๋๋ค. ํ
์์ ๋ํ ์ผ๋ถ varargs ํญ๋ชฉ์ด ๋๋ฝ๋์์ต๋๋ค(yaml์ kwonly ์ฃผ์์ ๋ํ ์กฐ์น๋ ์คํจํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค).
์ฃผ์์ด ์ข์์ง ํ์ธํ๊ธฐ ์ํด doc(string)์ ์ฌ์ฉํ๋ ์์ด๋์ด๋ ํ๋ฅญํฉ๋๋ค.
pyi
์คํ
์ด ์๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค. ์คํ
์๋ ์ต์ํ ์ ํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ค์ ์ํด +1.Python ์์ฑ์ ์ํ ๋ฐฑ์๋๋ก Jedi๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ IDE์ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ์กด์ฌํฉ๋๋ค. ๋ง๋์? ๊ทธ๋ฆฌ๊ณ ๊ทํ์ ์๋ฃจ์ ์ PyCharm ๋ฐ VS Code์ ๋ํด ๋๋ฌด ์ผ๋ฐ์ ์ ๋๊น ์๋๋ฉด ๊ตฌ์ฒด์ ์ ๋๊น? Jedi์ ํจ๊ป emacs๋ฅผ ์๋ฃ ๋ฐฑ์๋๋ก ์ฌ์ฉํ๊ณ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํฅ๋ฏธ๋ก์ด ์ ์ IPython ์ฝ์์์ ์๋ฃ๋ฅผ ์๋ํ ์ ์์ผ๋ฉฐ ์๋ํฉ๋๋ค! ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ป๊ฒ ๊ฐ๋ฅํ๊ฐ์?
๊ธ์์, IPython์ ๋์ ๋ด์ฑ์ ์ฌ์ฉํ๋ฉฐ ํญ์ ์๋ํฉ๋๋ค(๊ฐ์ฒด๋ฅผ ์์ฑ ํ ํ์ ๋ง ์๋ํ๋ฏ๋ก mytensor.a
์๋ฃํ ์ ์์ง๋ง mytensor.abs().m
ํ ์ ์์ต๋๋ค. type ํํธ.
๋ด๊ฐ ์ดํดํ๋ ํ VSCode์ Jupyter๋ Jedi๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์คํ
(.pyi ํ์ผ)์ ๊ธฐ์กด ๋ชจ๋ ์์ ์ ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ "ํ์ค" ๋ฐฉ๋ฒ์ด์ง๋ง ์์ง ์ํ๋ ๋งํผ ๊ด๋ฒ์ํ๊ฒ ์ง์๋์ง๋ ์์ต๋๋ค(์: ์ ๋ฌํ ์ ์๋ค๊ณ ํํํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์ฌ์ ํ ์์ต๋๋ค. ์ธ๋ฑ์ฑ ํจ์์ ์ค์ํ("..."). ์ฌ๋ฐ๋ฅธ ์กฐ์น๋ Jedi๋ก ์ด๋ํ์ฌ ์ ํ ํํธ ์คํ
์ง์์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค(https://github.com/davidhalter/jedi/issues/839). ํด์ฒด์ธ์ ๊ฐ์ ํ๊ธฐ ์ํด ์๊ฐ์ด๋ ๋์ ํฌ์ํ ์ ์๋ ๊ธฐํ์
๋๋ค!
@t-vi ์ด ๋ฌธ์ ๋ฅผ ๊ณ์ ์ถ์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
Stubs
๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
https://www.python.org/dev/peps/pep-0484/#stub -files
๊ทธ๋ฌ๋ Docstring
๋ ์คํ
์ผ๋ก ์์ฑ๋์ง ์์ต๋๋ค. Docstring
์ถ๊ฐํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
@t-vi ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ด ๋๊ตฌ ๋ชจ์์ ๊ฐ์ ํ๋ค๋ ๊ฒ์ ๋ฌด์์ ์๋ฏธํฉ๋๊น? ํ์ฌ Jedi๋ฅผ ์ฌ์ฉํ๊ณ ์์ง๋ง ํด๋น ์คํ
ํ์ผ๋ก ์์
ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ชจ๋ฆ
๋๋ค. ์ด๊ฒ์ ๋ด๊ฐ ์์ฑํด์ผ ํ๋ ๊ฒ์
๋๊น ์๋๋ฉด ๋ชจ๋์ ์๊ณ Jedi๋ฅผ ์
๋ฐ์ดํธํด์ผ ํฉ๋๊น? C++์ ํค๋์ ๋น์ทํฉ๋๊น?
๋งํฌํ PEP ๋ฌธ์ ๋ฐ ๋ฌธ์ ๋ ์ฌ์ฉ์ ์์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค์ ๋ก ๋์์ด ๋์ง ์์ต๋๋ค.
@kimdwkimdw ๋ชจ๋ ์ฌ๋์ด ์ฐพ์ ์ ์๋๋ก
@piojanu Jedi๋ typeshed ๋ถ๊ธฐ๊ฐ ์๋ ๊ฒ ๊ฐ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก pyi์ ๋ํ ๊ฒ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์๋ง๋ ์ ๋ค์ด ์์ฑ์์๊ฒ pyi ์ง์์ด ๊ฐ๋ฅํ๋๋ก ์ด๋ป๊ฒ ๋์ธ ์ ์๋์ง ๋ฌผ์ด๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
@t-vi ์ด์ ์๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์๋ PyTorch 0.3.0 ๋ฐ ๋ด PR(https://github.com/pytorch/pytorch/pull/8845)์์ Docstring
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์๋ ์๋ช
๋ฐ ์ ํ์ ์ถ๋ก ํ์ต๋๋ค.
@t-vi
Docstrings
๊ฐ ๋ฐฉ๋ฒ ์๋์ ์ถ๊ฐ ๋ ์ PYI
.
๋๋ถ๋ถ _torch_docs.py
@sproshev ์ ์๊ฒฌ์ ๋ํด #8845๋ PyCharm๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ IDE์์๋ ํ์ค ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ PyCharm์ Python stubs
์๋์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.
PyTorch's original way 0.3.0
๋๋ #8845๋ IPython์ PyCharms์์ ๋ง๋ญ๋๋ค.
์ ํ ์ ๋ณด๋ gen_python_functions.py
๋๋ ๊ธฐํ์ ํฌํจ๋ ์ ์์ต๋๋ค.
๋ช
์์ pyi
ํ์ผ์ ์์ฑํ๋ ๊ฒ์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์๋ง๋ ๊ฐ์ฅ ๊นจ๋ํ ๋ฐฉ๋ฒ์ ์๋ ๊ฒ์
๋๋ค.
๊ฐ์ ๋ฌธ์ , pycharm์ pytorch0.4๋ฅผ ์ฌ์ฉํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ชจ๊ฐ ์์ต๋๋ค. " ์ฐธ์กฐ๋ฅผ ์ฐพ์ ์ ์์ " ๋๋ " ํธ์ถ ํ ์ ์์ " ๋๋ฌธ์ ๊ฑฐ์ ๋ชจ๋ ํญ๋ชฉ์ ๋ฐ์ค์ด ๊ทธ์ด์ ธ ์์ต๋๋ค.
@nimcho ์ ๋ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค.์ด๊ฒ์ด ์?
๋๋ Mac์ ์ผ๊ฐ์ ํ ์น๋ฅผ ์ค์นํ๊ณ Pycharm์ ๋ช ๋ น์ ํด๋ฆญํ๋ฉด ์์ค๋ก ์ด๋ํ ์ ์์ง๋ง ์ ํ ํ๋กฌํํธํ ์ ์์ต๋๋ค. ๋ค์ ํด๋์์ ์บ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ ๊ฑฐํ ํ ๋ฌธ์ ๊ฐ ์์ ๋์์ต๋๋ค.
pytorch 1.0.0์์ ์ฌ์ ํ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์์ ์๋ฃจ์ ์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์ต๋๊น?
๋ถ๋๋ฝ๋ค... ๊ฑฐ์ 8๊ฐ์ :-(
@ebagdasa ๋๋ ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ์์ฐ์ ์ด๊ณ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ ์ด์ ์ ๋ํ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก @kimdwkimdw ๋ฐ @t-vi๋ ์๋ฅผ ๋ค์ด https://github.com/pytorch/pytorch/pull/12500 ์์ ๋ช ์์ ์ ํ ํํธ๋ฅผ ์์ฑํ์ฌ ์์ ํ์ผ๋ฉฐ ํด๋น PR์ด ๋ค์ด์ค๋ฉด PyCharm์ ์์ ํด์ผ ํฉ๋๋ค. ๋ฌธ์ .
๊ทธ๋ฆฌ๊ณ ํญ์ ๊ทธ๋ ๋ฏ์ด ์ด๊ฒ์ ์คํ ์์ค ํ๋ก์ ํธ์ด๋ฏ๋ก ๋์์ ์ค ์ ์๋ ์ฌ๋์ด ์์ผ๋ฉด ์ธ์ ๋ ์ง ๋์์ฃผ์ธ์. ์๋ฅผ ๋ค์ด @kimdwkimdw ์ @t-vi๋ ์์ ์๊ฐ์ ๊ทธ๊ฒ์ ํ๊ณ ๊ทธ์ ๋ํ ๋๊ฐ๋ ๋ฐ์ง ์์๊ณ ์ฆ์ค๋ ํ์ํ์ง ์์ต๋๋ค.
@ebagdasa , ํ๋ถ์ ์์ฒญํด์ผ ํฉ๋๋ค.
์ข์, ๋ด ์ฝ๋๊ฐ ํธ์ง๊ธฐ์์ ๋ชจ๋ ๊ฐ์กฐ ํ์๋๋ ๋ฐฉ์์ ๋ณด๊ณ ์ค๋งํ ๋๊ธ์ด์์ต๋๋ค. ์ฃ์กํฉ๋๋ค. ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํดํฉ๋๋ค. ๊ณ์ํด! VSCode๋ฅผ ์ฌ์ฉํด ๋ณผ ์๊ฐ์ ๋๋ค.
@soumith VS Code์ ์๋ ์์ฑ์ torch.randn
์ ๊ฐ์ ์ผ๋ถ ๊ธฐ๋ฅ์์๋ ๊นจ์ง๋๋ค.
๊ทธ๋ฆฌ๊ณ ํญ์ ๊ทธ๋ ๋ฏ์ด ์ด๊ฒ์ ์คํ ์์ค ํ๋ก์ ํธ์ด๋ฏ๋ก ๋์์ ์ค ์ ์๋ ์ฌ๋์ด ์์ผ๋ฉด ์ธ์ ๋ ์ง ๋์์ฃผ์ธ์. ์๋ฅผ ๋ค์ด @kimdwkimdw ์ @t-vi๋ ์์ ์๊ฐ์ ๊ทธ๊ฒ์ ํ๊ณ ๊ทธ์ ๋ํ ๋๊ฐ๋ ๋ฐ์ง ์์๊ณ ์ฆ์ค๋ ํ์ํ์ง ์์ต๋๋ค.
๋ฌผ๋ก ๊ทธ๋ค์ด ๋น์ฉ์ _did_ ๋ฐ๋๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค... FAIR๊ฐ ํ์๊ธ์ ์ํ ์ฐธ์ฌ๋ฅผ ์ฅ๋ คํ๊ธฐ ์ํด gitcoin๊ณผ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊น์? ๋ฌผ๋ก FAIR์ ์ฌ๋๋ค์ ์ด๋ฏธ ๊ทธ๋ค์ ๊ธฐ์ฌ์ ๋ํด ์๋นํ ๋ณด์์ ๋ฐ์๊ณ ์ฌ๊ธฐ ์๋ ๋๋ถ๋ถ์ ์ฌ๋๋ค(๋์ ๊ฐ์)์ ์๋ง๋ ์ผ์ ์ ๋ฌด๋ก ๊ฐ๋ ์ฐจ ์์ ๊ฒ์ ๋๋ค...
๋๋ pip ๋๋ conda๋ฅผ ์ฌ์ฉํ์ฌ VS Code, Atom ๋ฐ Pycharm์ ์๋ํ์ง๋ง, ๊ทธ ์ค ์ด๋ ๊ฒ๋ torch.max()์ ๊ฐ์ ์ผ๋ถ ๊ธฐ๋ฅ์์ ์๋ ์์ฑ์ ์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค. IPython๊ณผ Jupyter์๋ ์ด ๋ฌธ์ ๊ฐ ์์ง๋ง ํธ์ง๊ธฐ๋ ์๋๋๋ค.
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง. PyCharm , VS code , Spyder ..torch.cat ์ ์๋ํ์ต๋๋ค. Longtensor์ ๋์ผํฉ๋๋ค.
์ด ๋ฌธ์ ์ ๋๊ธ ์ ์ฒด์์ ์ด๊ฒ์ PyCharm๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ก ๊ณ์ ์ฒญ๊ตฌ๋์์ผ๋ฉฐ PyCharm์ ๋ด๋ถ์ PyTorch์ ๋ด๋ถ๊ฐ ํจ๊ป ์๋ํ๋ ๋ฐฉ์์ ๋ฌธ์ ๋ผ๊ณ ์ธ๊ธ๋์์ต๋๋ค. ์ด๊ฒ์ ๋ฌธ์ ์ ์๋ชป๋ ํน์ฑํ์ด๋ฉฐ, ๊ทธ๋ ๊ฒ ๋ณด๋ ๊ฒ์ ์๋ง๋ ์ฌ๋ฐ๋ฅธ ํด๊ฒฐ์ฑ ์ผ๋ก ์ด์ด์ง์ง ์์ ๊ฒ์ ๋๋ค. PyCharm์ ํจํค์ง๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋นํ ํ์ค์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ทจํ๊ณ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ฌ๋ฌ ์ฌ๋๋ค์ด ์ธ๊ธํ๋ฏ์ด ์ด ๋ฌธ์ ๋ PyCharm๋ง์ ๋ฌธ์ ๊ฐ ์๋๋๋ค. PyCharm์ PyTorch์์ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ํธ์ง๊ธฐ์ ๋๋ค. (์๋๋ฅผ ์ํด) ํจํค์ง๋ฅผ ๋์ ์ผ๋ก ํด๊ฒฐํ์ง ์๋ ๋ชจ๋ ํธ์ง๊ธฐ์๋ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. IPython/Jupyter/etc๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ํด๊ฒฐํ ์ ์๋ค๋ ์ฌ์ค์ ๊ท์น์ด ์๋๋ผ ์์ธ๋ผ๊ณ ์๊ฐํฉ๋๋ค. "์ผ๋ฐ์ ์ผ๋ก ์๋ํ๊ฒ ๋ง๋๋ ๊ฒ"๋ณด๋ค "PyCharm๊ณผ ํจ๊ป ์๋ํ๊ฒ ๋ง๋๋ ๊ฒ"์ ๋๋ฌด ๋ง์ ์ด์ ์ ๋์ง ์๋๋ก ์ด๊ฒ์ ๊ฐ์กฐํ๊ณ ์ถ์์ต๋๋ค.
์ฆ, ์ด PR ์์ ์์ ์ค์ธ ์คํ ์ ์ข์ "ํ์ค" ์๋ฃจ์ ์ด๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ด์ผ ํฉ๋๋ค. ๋น ๋ฅธ ์์ ์๋ฃจ์ ์ ์ฐพ๋ ์ฌ๋๋ค์ ์ํด ์์ ์ ์ค๋ช ๋ ๋๋ก ํด๋น ์คํ ํ์ผ์ dist-packages/site-packages์ ๋ณต์ฌํ์ญ์์ค. ๋ค๋ฅธ ๋๋ฝ๋ ๋ถํ์ ์๋์ผ๋ก ์ถ๊ฐํ๊ณ ๋๋ฝ๋ ๋ถํ์ ๋ณด๊ณ ํ์ฌ ์ฒ๋ฆฌ๋๋๋ก ํฉ๋๋ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ! @t-vi์ ํจ์น๊ฐ ๋ง์คํฐ์ ๋ณํฉ๋์์ผ๋ฏ๋ก ์ ๋ฐ์ดํธํ๋ฉด ๋ง์คํฐ์ ํ ์น์ ๋ํ ์๋ ์์ฑ ๊ธฐ๋ฅ์ด ์๋ํด์ผ ํฉ๋๋ค. ๋ํ 1.0.1์ฉ์ผ๋ก ์ง์ ์์ฑํ ์ ํ ์คํ ์ ์ปค๋ฐํ์ผ๋ฏ๋ก ํด๋น ๋ฆด๋ฆฌ์ค๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ๋ฆด๋ฆฌ์ค์ ์ฌ์ฉ์์๊ฒ๋ ์๋ ์์ฑ ๊ธฐ๋ฅ์ด ์๋ํฉ๋๋ค.
์ ํ ์คํ ์ ์๋ง๋ mypy๋ก ์ฝ๋๋ฅผ ์ค์ ๋ก ์ ํ ๊ฒ์ฌํ๊ธฐ์ ์ถฉ๋ถํ์ง ์์ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด ํ์ ์์ ์ #16574์์ ์ถ์ ํ๊ณ ์์ต๋๋ค. ๋ง์ฝ ๊ทธ๊ฒ์ด ๋น์ ์๊ฒ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ค๋ฉด ์๋ ค์ฃผ์ธ์. ๋ํ ํ ์น์ ์๋ ์์ฑ๋ง ์์ ํ์ต๋๋ค. ๋ค๋ฅธ ๋ชจ๋์์ ์๋ ์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ํ ์น์ ์๋ณ์๊ฐ ๋๋ฝ๋์๋ค๊ณ ์๊ฐ๋๋ฉด ๋ฒ๊ทธ ๋ณด๊ณ ์๋ฅผ ํตํด ์๋ ค์ฃผ์ญ์์ค.
๊ธฐ๋ค๋ ค ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ฐธ๊ณ ๋ก ์ v1.0.1 ๋ฆด๋ฆฌ์ค์์๋ ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ด ์ถ์๋์์ต๋๋ค.
@ezyang torch.cuda
๋ pyi
์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด torch.cuda.is_available
์
๋๋ค.
๋๋ ํ ์น 1.0.1์์ ๋ถ๋ถ์ ์ผ๋ก ์๋ํ๋ VSCode์ ๋ํ ์ธํ
๋ฆฌ์ผ์ค๋ฅผ ์ป๊ณ ์์ง๋ง torch.as_tensor
์ผ๋ถ ๊ธฐ๋ฅ์ด ์ฌ์ ํ ๋๋ฝ๋์ด ์์ต๋๋ค.
๋ํ PyCharm์ ์ผ๋ถ ๊ธฐ๋ฅ์ ๋ํด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์๋ ์์ฑ ๊ธฐ๋ฅ์ด ์์์ต๋๋ค(๊ฐ์ฅ ํ์ํ ๋ ๋๋ฝ๋จ). ์ด ๋ฌธ์ ๊ฐ ์์ง ์์ ํ ํด๊ฒฐ๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ง๋ ์ฃผ๋ง์ ์ฒซ PyTorch ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ค์ ์ ์ค์๊ฐ ์์๋์ง ํ์คํ์ง ์์ต๋๋ค.
@vpj PyTorch v1.0.1์์ ์์ ๋์์ต๋๋ค. ๋ ๋ฎ์ ๊ฒ์ ์ฌ์ ํ โโ๋ฌธ์ ๊ฐ ์์ต๋๋ค. print(torch.__version__)
๋ฒ์ ์ 1.0.1post2์ ๋๋ค.
__init__.pyi ํ์ผ์ ์ผ๋ถ ์ ์๊ฐ ์์ต๋๋ค.
PyCharm์ ๋ํ ๋ฐํ ์ ํ์ ์ ์ถํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค. ์ ๋ฐํ ๊ฐ ๊ฒ์ ์๋ฅผ ๋ค์ด, ์ถ๋ก ํ์ง ์๋ ๊ฒ torch.exp
A๋ Tensor
(๊ทธ๋ฌ๋ ๋ฐํ ํ์์ด๋ก ์ถ์ ๋๋ Tensor.exp
). ๋ฐํ ์ ํ์ torch.exp
๋ฉ์๋ ์ ์์ ์ ์๋์ด ์์ต๋๋ค.
์, ์ ๋ '1.0.1.post2'๋ก ์
๊ทธ๋ ์ด๋ํฉ๋๋ค.
์๋ ์์ฑ์ด ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค
๋ฐ๋ผ์ ๋ ํฐ ๋ฌธ์ ๋ฅผ ์์ ํ์ง๋ง ๋ช ๊ฐ์ง ๋ค์์คํ์ด์ค๊ฐ ์ฌ์ ํ ๋๋ฝ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ ์ฌ๊ธฐ์ ๋ํ ์๋ก์ด ์ถ์ ์์ ์ ์ด์์ต๋๋ค: https://github.com/pytorch/pytorch/issues/16996
๋๋ ์ด๊ฒ์ ๋ํด ์ ๋ชจ๋ฅด๊ฒ ๋ค? (์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๊น?) ์ฝ์์ด ์ ๋๋ก ์๋ํฉ๋๋ค.
(ํ์ง๋ง from torch.utils.data import DataLoader, Dataset
์๋)
@yarcowang ์ ์ ๋ ๋ง์ ๋ค์์คํ์ด์ค๋ฅผ ์ถ๊ฐํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ 1.2.0์์ ์์ฃผ ์ ์๋ํฉ๋๋ค. ๊ทธ๋๋ ๋๋ฝ๋ ๊ฒ์ด ์์ผ๋ฉด ๋ฒ๊ทธ๋ฅผ ์ ๊ณ ํ์ธ์.
@ezyang ์์์ด. ์ ๊ฒ ์ด์. ์ฅ๊ธฐ์ ์ธ ๋ฒ๊ทธ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ pytorch์ ๋ํ ์๋ก์ด ์ฌ๋์ ๋๋ค. ๋๋ถ์ ์ ์๋ํฉ๋๋ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ ์ฒด ์ค๋ ๋๋ฅผ ํต๊ณผํ์ต๋๋ค. ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋์ง ์ฌ๋ถ๋ฅผ ์ฐพ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต์ต๋๋ค. ์ ๋ torch1.4+cpu๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ torch.tensor์๋ ์ฌ์ ํ ๊ฒฝ๊ณ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์๋ฌด๋ ๋์ธ ์ ์์ต๋๊น? ๊ฐ์ฌ ํด์
๋ํ torch.Tensor์์ ์ด ๋ฌธ์ ๊ฐ ๊ณ์ ๋ฐ์ํฉ๋๋ค.
๋๊ธ ๊ฐ์ฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ง๋ ๋ช ๋ฌ ๋์ ๋ง์ ์์ ์ ํ ํํธ ๋ฒ๊ทธ๋ฅผ ์์ ํ์ต๋๋ค. ์ต์ ๋ฆด๋ฆฌ์ค๋ ๋ง์คํฐ์์ ์๋ํ์ง ์๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ฉด ๋ฒ๊ทธ๋ฅผ ์ด์ด ์ฃผ์๋ฉด ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฌ ํด์!
๋ฒ์ 1.4.0์์ ๊นจ๋ฌ์ ๋ถ๋ถ:
torch.cuda.manual_seed # manual_seed not hinting
torch.cuda.manual_seed_all # manual_seed_all not hinting
torch.utils # cannot find utils
torch.backends # cannot find backends
torch.optim.lr_scheduler._LRScheduler.step() # argument "epoch" unfilled, while it's optional
torch.Tensor(4, 1) # unexpected arguments & argument "requires_grad" unfilled
torch.optim.Adadelta # cannot find Adadelta
torch.nn.TransformerEncoderLayer # cannot find TransformerEncoderLayer
torch.nn.TransformerEncoder # cannot find TransformerEncoder
@tjysdsg ์ ๋ณด ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ ๋ง์ ๊ฐ์์ฑ์ ์ํด ํด๋น ์ฌ๋ก์ ๋ํ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ด โโ์ ์์ต๋๊น?
@tjysdsg ์ ๋ณด ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ ๋ง์ ๊ฐ์์ฑ์ ์ํด ํด๋น ์ฌ๋ก์ ๋ํ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ด โโ์ ์์ต๋๊น?
@zou3519 ์ฌ๊ธฐ #34699์ ๋๋ค. ์๋ก์ด ๊ฒ์ ๋ฐ๊ฒฌํ๋ฉด ๋ฌธ์ ๋ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ง์ ์ ์ ๋ถ๋ค์ด ์์ฒญํด์ฃผ์ ์ ์ฐ์ ์์๋ฅผ ์ฌ๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค... ๋ ์์ธํ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.