|
13 | 13 |
|
14 | 14 | 1) `torch.save <https://pytorch.org/docs/stable/torch.html?highlight=save#torch.save>`__: |
15 | 15 | 직렬화된 객체를 디스크에 저장합니다. 이 함수는 Python의 |
16 | | - `pickle <https://docs.python.org/3/library/pickle.html>`__ 을 사용하여 직렬화합니다 |
| 16 | + `pickle <https://docs.python.org/3/library/pickle.html>`__ 을 사용하여 직렬화합니다. |
17 | 17 | 이 함수를 사용하여 모든 종류의 객체의 모델, Tensor 및 사전을 저장할 수 있습니다. |
18 | 18 |
|
19 | 19 | 2) `torch.load <https://pytorch.org/docs/stable/torch.html?highlight=torch%20load#torch.load>`__: |
20 | 20 | `pickle <https://docs.python.org/3/library/pickle.html>`__\ 을 사용하여 |
21 | | - 저장된 객체 파일들을 역직렬화하여 메모리에 올립니다. 이 함수는 데이터를 장치에 |
22 | | - 불러올 때도 사용합니다. |
23 | | - (`장치간 모델 저장하기 & 불러오기 <#device>`__ 참고) |
| 21 | + 저장된 객체 파일들을 역직렬화하여 메모리에 올립니다. 이 함수는 데이터를 장치에 불러올 |
| 22 | + 때에도 사용됩니다. |
| 23 | + (`장치 간 모델 저장하기 & 불러오기 <#device>`__ 참고) |
24 | 24 |
|
25 | 25 | 3) `torch.nn.Module.load_state_dict <https://pytorch.org/docs/stable/generated/torch.nn.Module.html?highlight=load_state_dict#torch.nn.Module.load_state_dict>`__: |
26 | 26 | 역직렬화된 *state_dict* 를 사용하여 모델의 매개변수들을 불러옵니다. |
|
145 | 145 | # model.eval() |
146 | 146 | # |
147 | 147 | # .. note:: |
148 | | -# PyTorch 버전 1.6에서는 새로운 Zip파일-기반의 파일 포맷을 사용하도록 |
149 | | -# ``torch.save`` 가 변경되었습니다. ``torch.load`` 는 예전 방식의 파일들을 |
| 148 | +# PyTorch 버전 1.6에서는 ``torch.save`` 가 새로운 Zip파일-기반의 파일 |
| 149 | +# 포맷을 사용하도록 변경되었습니다. ``torch.load`` 는 예전 방식의 파일들을 |
150 | 150 | # 읽어올 수 있도록 하고 있습니다. 어떤 이유에서든 ``torch.save`` 가 예전 |
151 | 151 | # 방식을 사용하도록 하고 싶다면, ``_use_new_zipfile_serialization=False`` 을 |
152 | 152 | # kwarg로 전달하세요. |
153 | 153 | # |
154 | | -# 추론을 위해 모델을 저장할 때는 학습된 모델의 학습된 매개변수만 저장하면 됩니다. |
| 154 | +# 추론을 위해 모델을 저장할 때는 그 모델의 학습된 매개변수만 저장하면 됩니다. |
155 | 155 | # ``torch.save()`` 를 사용하여 모델의 *state_dict* 를 저장하는 것이 나중에 모델을 |
156 | 156 | # 사용할 때 가장 유연하게 사용할 수 있는, 모델 저장 시 권장하는 방법입니다. |
157 | 157 | # |
158 | 158 | # PyTorch에서는 모델을 저장할 때 ``.pt`` 또는 ``.pth`` 확장자를 사용하는 것이 |
159 | 159 | # 일반적인 규칙입니다. |
160 | 160 | # |
161 | | -# 추론을 실행하기 전에는 반드시 ``model.eval()`` 을 호출하여 드롭아웃 및 배치 |
162 | | -# 정규화를 평가 모드로 설정하여야 합니다. 이것을 하지 않으면 추론 결과가 일관성 |
163 | | -# 없게 출력됩니다. |
| 161 | +# 추론을 실행하기 전에 반드시 ``model.eval()`` 을 호출하여 드롭아웃 및 배치 |
| 162 | +# 정규화를 평가 모드로 설정하여야 합니다. 이 과정을 거치지 않으면 일관성 없는 |
| 163 | +# 추론 결과가 출력됩니다. |
164 | 164 | # |
165 | 165 | # .. Note :: |
166 | 166 | # |
167 | 167 | # ``load_state_dict()`` 함수에는 저장된 객체의 경로가 아닌, 사전 객체를 |
168 | 168 | # 전달해야 하는 것에 유의하세요. 따라서 저장된 *state_dict* 를 ``load_state_dict()`` |
169 | 169 | # 함수에 전달하기 전에 반드시 역직렬화를 해야 합니다. 예를 들어, |
170 | | -# ``model.load_state_dict(PATH)`` 과 같은 식으로는 사용하면 안됩니다. |
| 170 | +# ``model.load_state_dict(PATH)`` 과 같은 식으로 사용하면 안됩니다. |
171 | 171 | # |
172 | 172 | # .. Note :: |
173 | 173 | # |
|
192 | 192 | # |
193 | 193 | # .. code:: python |
194 | 194 | # |
195 | | -# # 모델 클래스는 어딘가에 반드시 선언되어 있어야 합니다 |
| 195 | +# # 모델 클래스는 어딘가에 반드시 선언되어 있어야 합니다. |
196 | 196 | # model = torch.load(PATH) |
197 | 197 | # model.eval() |
198 | 198 | # |
|
213 | 213 | # 정규화를 평가 모드로 설정하여야 합니다. 이것을 하지 않으면 추론 결과가 일관성 |
214 | 214 | # 없게 출력됩니다. |
215 | 215 | # |
216 | | -# Export/Load Model in TorchScript Format |
| 216 | +# TorchScript 포맷으로 모델 내보내기/가져오기 |
217 | 217 | # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
218 | 218 | # |
219 | | -# One common way to do inference with a trained model is to use |
220 | | -# `TorchScript <https://pytorch.org/docs/stable/jit.html>`__, an intermediate |
221 | | -# representation of a PyTorch model that can be run in Python as well as in a |
222 | | -# high performance environment like C++. TorchScript is actually the recommended model format |
223 | | -# for scaled inference and deployment. |
| 219 | +# 훈련된 모델로 추론을 수행하는 일반적인 방법 중 하나는 `TorchScript <https://pytorch.org/docs/stable/jit.html>`__ 를 사용하는 것입니다. |
| 220 | +# TorchScript는 파이썬 환경이나 C++와 같은 고성능 환경에서 실행할 수 있는 |
| 221 | +# 파이토치 모델의 중간 표현(IR; Intermediate Representation)입니다. |
| 222 | +# TorchScript는 확장된 추론 및 배포에 권장되는 모델 형식이기도 합니다. |
224 | 223 | # |
225 | 224 | # .. note:: |
226 | | -# Using the TorchScript format, you will be able to load the exported model and |
227 | | -# run inference without defining the model class. |
| 225 | +# TorchScript 형식을 사용하면 모델 클래스를 정의하지 않고도 내보낸 모델을 읽어 오거나 추론을 실행할 수 있습니다. |
228 | 226 | # |
229 | 227 | # **Export:** |
230 | 228 | # |
231 | 229 | # .. code:: python |
232 | 230 | # |
233 | | -# model_scripted = torch.jit.script(model) # Export to TorchScript |
234 | | -# model_scripted.save('model_scripted.pt') # Save |
| 231 | +# model_scripted = torch.jit.script(model) # TorchScript 형식으로 내보내기 |
| 232 | +# model_scripted.save('model_scripted.pt') # 저장하기 |
235 | 233 | # |
236 | 234 | # **Load:** |
237 | 235 | # |
|
240 | 238 | # model = torch.jit.load('model_scripted.pt') |
241 | 239 | # model.eval() |
242 | 240 | # |
243 | | -# Remember that you must call ``model.eval()`` to set dropout and batch |
244 | | -# normalization layers to evaluation mode before running inference. |
245 | | -# Failing to do this will yield inconsistent inference results. |
| 241 | +# 추론 실행 전, 드롭아웃 및 배치(batch) 정규화 레이어를 평가 모드로 설정하기 위해 ``model.eval()`` 을 호출해야 |
| 242 | +# 합니다. 이 호출 과정이 없으면 일관성 없는 추론 결과가 나타납니다. |
246 | 243 | # |
247 | | -# For more information on TorchScript, feel free to visit the dedicated |
248 | | -# `tutorials <https://tutorials.pytorch.kr/beginner/Intro_to_TorchScript_tutorial.html>`__. |
249 | | -# You will get familiar with the tracing conversion and learn how to |
250 | | -# run a TorchScript module in a `C++ environment <https://tutorials.pytorch.kr/advanced/cpp_export.html>`__. |
| 244 | +# TorchScript에 대한 추가 정보는 전용 |
| 245 | +# `자습서 <https://tutorials.pytorch.kr/beginner/Intro_to_TorchScript_tutorial.html>`__ 에서 찾을 수 있습니다. |
| 246 | +# `C++ 환경 <https://tutorials.pytorch.kr/advanced/cpp_export.html>`__ 문서를 참고하여 트레이싱(Tracing) 변환을 |
| 247 | +# 수행하는 방법과 C++ 환경에서 TorchScript 모듈을 실행하는 방법을 익힐 수 있습니다. |
| 248 | + |
251 | 249 |
|
252 | 250 |
|
253 | 251 | ###################################################################### |
|
0 commit comments