diff --git a/advanced_source/neural_style_tutorial.py b/advanced_source/neural_style_tutorial.py index 5accb2988..548cdaa35 100644 --- a/advanced_source/neural_style_tutorial.py +++ b/advanced_source/neural_style_tutorial.py @@ -142,7 +142,7 @@ def imshow(tensor, title=None): # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # # Content 손실은 각 계층에 대한 Content 거리의 가중치 버전을 나타냅니다. -# 이 함수는 입력 :math:`X` 를 처리하는 레이어 :math:`L` 의 특징 맵 :math:`F_{XL}` 을 가져와서 +# 이 함수는 입력 :math:`X` 를 처리하는 계층 :math:`L` 의 특징 맵 :math:`F_{XL}` 을 가져와서 # 이미지 :math:`X` 와 Content 이미지 :math:`C` 사이의 # 가중 콘텐츠 거리(weighted content distance) :math:`w_{CL}.D_C^L(X,C)` 를 반환합니다. # Content 거리를 계산하기 위해 Content 이미지(:math:`F_{CL}`)의 특징 맵을 함수에서 알고 있어야합니다. @@ -150,7 +150,7 @@ def imshow(tensor, title=None): # 거리 :math:`\|F_{XL} - F_{CL}\|^2` 는 두 개의 특징 맵 집합의 평균 제곱 오차이며 ``nn.MSELoss`` 를 사용하여 계산할 수 있습니다. # # Content 거리를 계산하기 위해 사용되는 합성곱 계층 바로 뒤에 Content 손실 모듈을 추가합니다. -# 이렇게 하면 입력 이미지가 입력될 때마다 Content 손실이 원하는 레이어에서 +# 이렇게 하면 입력 이미지가 입력될 때마다 Content 손실이 원하는 계층에서 # 계산되고 autograd 을 통해 모든 기울기가 계산됩니다. # 이제 Content 손실 계층을 만들기 위해 Content 손실을 계산한 다음 계층의 입력을 반환하는 # ``forward`` 메소드를 정의해야합니다. @@ -400,7 +400,7 @@ def run_style_transfer(cnn, normalization_mean, normalization_std, # 이에 맞춰서 requires_grad 값을 갱신합니다. input_img.requires_grad_(True) # 또한, 모델을 평가(eval) 모드로 전환하여 - # 드롭아웃(dropout) 및 배치 정규화(batch normalization)와 같은 특정 레이어가 올바르게 동작하도록 합니다. + # 드롭아웃(dropout) 및 배치 정규화(batch normalization)와 같은 특정 계층이 올바르게 동작하도록 합니다. model.eval() model.requires_grad_(False) diff --git a/advanced_source/semi_structured_sparse.py b/advanced_source/semi_structured_sparse.py index f7336189f..463c8e4af 100644 --- a/advanced_source/semi_structured_sparse.py +++ b/advanced_source/semi_structured_sparse.py @@ -40,7 +40,7 @@ # # 이 튜토리얼은 초보자에게 반구조적 희소성 및 일반적인 희소성을 맞춤 설명합니다. # 이미 2:4 희소 모델을 보유한 사용자에게는 ``to_sparse_semi_structured``를 사용하여 -# 추론을 위한 ``nn.Linear`` 레이어를 가속화하는 것이 매우 간단합니다. 다음은 그 예시입니다: +# 추론을 위한 ``nn.Linear`` 계층을 가속화하는 것이 매우 간단합니다. 다음은 그 예시입니다: # import torch @@ -467,10 +467,10 @@ def measure_execution_time(model, batch_sizes, dataset): # 도구가 포함되어 있습니다. 이러한 희소화 도구는 모델의 가중치 텐서에 마스크 매개변수화를 적용하여 # 작동합니다. 이를 통해 가지치기된 가중치를 마스킹하여 희소성을 시뮬레이션할 수 있습니다. # -# 또한, 모델의 어느 레이어에 희소성을 적용할지 결정해야 합니다. 이 경우에는 각각의 테스크 헤드 출력을 -# 제외한 모든 ``nn.Linear`` 레이어에 적용합니다. 이는 반구조적 희소성(semi-structured sparsity)이 +# 또한, 모델의 어느 계층에 희소성을 적용할지 결정해야 합니다. 이 경우에는 각각의 테스크 헤드 출력을 +# 제외한 모든 ``nn.Linear`` 계층에 적용합니다. 이는 반구조적 희소성(semi-structured sparsity)이 # `형상 제약 `_ -# 을 가지기 때문이며, 각각의 task ``nn.Linear`` 레이어는 이러한 제약을 충족하지 않기 때문입니다. +# 을 가지기 때문이며, 각각의 task ``nn.Linear`` 계층은 이러한 제약을 충족하지 않기 때문입니다. # sparsifier = WeightNormSparsifier( diff --git a/beginner_source/basics/optimization_tutorial.py b/beginner_source/basics/optimization_tutorial.py index d6d9ce9f7..565ae1e2f 100644 --- a/beginner_source/basics/optimization_tutorial.py +++ b/beginner_source/basics/optimization_tutorial.py @@ -149,7 +149,7 @@ def forward(self, x): def train_loop(dataloader, model, loss_fn, optimizer): size = len(dataloader.dataset) - # 모델을 학습(train) 모드로 설정합니다 - 배치 정규화(Batch Normalization) 및 드롭아웃(Dropout) 레이어들에 중요합니다. + # 모델을 학습(train) 모드로 설정합니다 - 배치 정규화(Batch Normalization) 및 드롭아웃(Dropout) 계층들에 중요합니다. # 이 예시에서는 없어도 되지만, 모범 사례를 위해 추가해두었습니다. model.train() for batch, (X, y) in enumerate(dataloader): @@ -168,7 +168,7 @@ def train_loop(dataloader, model, loss_fn, optimizer): def test_loop(dataloader, model, loss_fn): - # 모델을 평가(eval) 모드로 설정합니다 - 배치 정규화(Batch Normalization) 및 드롭아웃(Dropout) 레이어들에 중요합니다. + # 모델을 평가(eval) 모드로 설정합니다 - 배치 정규화(Batch Normalization) 및 드롭아웃(Dropout) 계층들에 중요합니다. # 이 예시에서는 없어도 되지만, 모범 사례를 위해 추가해두었습니다. model.eval() size = len(dataloader.dataset) diff --git a/beginner_source/blitz/neural_networks_tutorial.py b/beginner_source/blitz/neural_networks_tutorial.py index 52330c763..1ac765075 100644 --- a/beginner_source/blitz/neural_networks_tutorial.py +++ b/beginner_source/blitz/neural_networks_tutorial.py @@ -54,29 +54,29 @@ def __init__(self): self.fc3 = nn.Linear(84, 10) def forward(self, input): - # 합성곱(Convolution) 레이어 c1: 입력 이미지 채널 1, 출력 채널 6, + # 합성곱(Convolution) 계층 c1: 입력 이미지 채널 1, 출력 채널 6, # 5x5 정사각 합성곱, 활성 함수로 RELU 사용 및 (N, 6, 28, 28)의 크기를 # 갖는 Tensor를 출력 (N은 배치 크기) c1 = F.relu(self.conv1(input)) - # 서브샘플링(Subsampling) 레이어 s2: 2x2 격자, 순전히 기능적인 레이어로, - # 이 레이어는 어떠한 매개변수도 가지지 않고 (N, 6, 14, 14) Tensor를 출력 + # 서브샘플링(Subsampling) 계층 s2: 2x2 격자, 순전히 기능적인 계층으로, + # 이 계층은 어떠한 매개변수도 가지지 않고 (N, 6, 14, 14) Tensor를 출력 s2 = F.max_pool2d(c1, (2, 2)) - # 합성곱(Convolution) 레이어 c3: 입력 채널 6, 출력 채널 16, + # 합성곱(Convolution) 계층 c3: 입력 채널 6, 출력 채널 16, # 5x5 정사각 합성곱, 활성 함수로 RELU 사용 및 (N, 16, 10, 10)의 크기를 # 갖는 Tensor를 출력 c3 = F.relu(self.conv2(s2)) - # 서브샘플링(Subsampling) 레이어 s4: 2x2 격자, 순전히 기능적인 레이어로, - # 이 레이어는 어떠한 매개변수도 가지지 않고 (N, 16, 5, 5) Tensor를 출력 + # 서브샘플링(Subsampling) 계층 s4: 2x2 격자, 순전히 기능적인 계층으로, + # 이 계층은 어떠한 매개변수도 가지지 않고 (N, 16, 5, 5) Tensor를 출력 s4 = F.max_pool2d(c3, 2) # 평탄화(flatten) 연산: 순전히 기능적으로 동작하며, (N, 400) Tensor를 출력 s4 = torch.flatten(s4, 1) - # 완전히 연결된 레이어 f5: (N, 400) Tensor를 입력으로 받아서 + # 완전히 연결된 계층 f5: (N, 400) Tensor를 입력으로 받아서 # (N, 120) Tensor를 출력하며, 활성 함수로 RELU 사용 f5 = F.relu(self.fc1(s4)) - # 완전히 연결된 레이어 f6: (N, 120) Tensor를 입력으로 받아서 + # 완전히 연결된 계층 f6: (N, 120) Tensor를 입력으로 받아서 # (N, 84) Tensor를 출력하며, 활성 함수로 RELU 사용 f6 = F.relu(self.fc2(f5)) - # 가우시안 레이어 출력: (N, 84) Tensor를 입력으로 받아서 + # 가우시안 계층 출력: (N, 84) Tensor를 입력으로 받아서 # (N, 10) Tensor를 출력 output = self.fc3(f6) return output diff --git a/beginner_source/chatbot_tutorial.py b/beginner_source/chatbot_tutorial.py index aa75059fc..636ad4865 100644 --- a/beginner_source/chatbot_tutorial.py +++ b/beginner_source/chatbot_tutorial.py @@ -568,7 +568,7 @@ def batch2TrainData(voc, pair_batch): # 순환 신경망을 같이 이용하여 이러한 목적을 달성할 수 있음을 발견했습니다. # RNN 하나는 **인코더** 로, 가변 길이 입력 시퀀스를 고정된 길이의 문맥 # 벡터(context vector)로 인코딩합니다. 이론상 문맥 벡터(RNN의 마지막 -# 은닉 레이어)는 봇에게 입력으로 주어지는 질의 문장에 대한 의미론적 정보를 +# 은닉 계층)는 봇에게 입력으로 주어지는 질의 문장에 대한 의미론적 정보를 # 담고 있을 것입니다. 두 번째 RNN은 **디코더** 입니다. 디코더는 단어 하나와 # 문맥 벡터를 입력으로 받고, 시퀀스의 다음 단어가 무엇일지를 추론하여 # 반환하며, 다음 단계에서 사용할 은닉 상태도 같이 반환합니다. @@ -594,7 +594,7 @@ def batch2TrainData(voc, pair_batch): # 나중에 디코더는 이를 이용하여 주어진 문제에 대해 의미 있는 출력을 # 구할 것입니다. # -# 인코더의 핵심 부분에는 다중 레이어 게이트 순환 유닛(multi-layered Gated +# 인코더의 핵심 부분에는 다중 계층 게이트 순환 유닛(multi-layered Gated # Recurrent Unit)이 있습니다. 이는 `Cho 등 `__ # 이 2014년에 고안한 것입니다. 우리는 GRU를 양방향으로 변환한 형태를 # 사용할 것이며, 이는 본질적으로 두 개의 독립된 RNN이 존재한다는 @@ -612,9 +612,9 @@ def batch2TrainData(voc, pair_batch): # # 그림 출처: https://colah.github.io/posts/2015-09-NN-Types-FP/ # -# ``embedding`` 레이어가 단어 인덱스를 임의 크기의 피처 공간으로 +# ``embedding`` 계층이 단어 인덱스를 임의 크기의 피처 공간으로 # 인코딩하는 데 사용되었음에 유의하기 바랍니다. 우리의 모델에서는 이 -# 레이어가 각 단어를 크기가 *hidden_size* 인 피처 공간으로 매핑할 +# 계층이 각 단어를 크기가 *hidden_size* 인 피처 공간으로 매핑할 # 것입니다. 학습을 거치면 서로 뜻이 유사한 단어는 의미적으로 유사하게 # 인코딩될 것입니다. # @@ -643,7 +643,7 @@ def batch2TrainData(voc, pair_batch): # # **출력:** # -# - ``outputs``: GRU의 마지막 은닉 레이어에 대한 출력 피처 값(양방향 +# - ``outputs``: GRU의 마지막 은닉 계층에 대한 출력 피처 값(양방향 # (출력을 합산한 것). shape=\ *(max_length, batch_size, hidden_size)* # - ``hidden``: GRU의 최종 은닉 상태. shape=\ *(n_layers x # num_directions, batch_size, hidden_size)* @@ -727,7 +727,7 @@ def forward(self, input_seq, input_lengths, hidden=None): # 모든 상태를 뜻합니다. # # 종합해 보면, 전역 어텐션 메커니즘을 다음 그림과 같이 요약할 수 있을 -# 것입니다. 우리가 '어텐션 레이어'를 ``Attn`` 라는 독립적인 ``nn.Module`` 로 +# 것입니다. 우리가 '어텐션 계층'을 ``Attn`` 라는 독립적인 ``nn.Module`` 로 # 구현할 것임에 유의하기 바랍니다. 이 모듈의 출력은 모양이 *(batch_size, 1, # max_length)* 인 정규화된 softmax 가중치 텐서입니다. # @@ -737,7 +737,7 @@ def forward(self, input_seq, input_lengths, hidden=None): # :alt: global_attn # -# Luong 어텐션 레이어 +# Luong 어텐션 계층 class Attn(nn.Module): def __init__(self, method, hidden_size): super(Attn, self).__init__() @@ -798,7 +798,7 @@ def forward(self, hidden, encoder_outputs): # # - ``input_step``: 입력 시퀀스 배치에 대한 한 단위 시간(한 단어). # shape=\ *(1, batch_size)* -# - ``last_hidden``: GRU의 마지막 은닉 레이어. shape=\ *(n_layers x +# - ``last_hidden``: GRU의 마지막 은닉 계층. shape=\ *(n_layers x # num_directions, batch_size, hidden_size)* # - ``encoder_outputs``: 인코더 모델의 출력. shape=\ *(max_length, # batch_size, hidden_size)* @@ -823,7 +823,7 @@ def __init__(self, attn_model, embedding, hidden_size, output_size, n_layers=1, self.n_layers = n_layers self.dropout = dropout - # 레이어를 정의합니다 + # 계층을 정의합니다 self.embedding = embedding self.embedding_dropout = nn.Dropout(dropout) self.gru = nn.GRU(hidden_size, hidden_size, n_layers, dropout=(0 if n_layers == 1 else dropout)) @@ -924,8 +924,8 @@ def maskNLLLoss(inp, target, mask): # .. warning:: # # PyTorch의 RNN 모듈( ``RNN``, ``LSTM``, ``GRU`` )은 전체 입력 시퀀스(또는 -# 시퀀스의 배치)를 단순히 넣어주기만 하면 다른 비순환 레이어처럼 사용할 수 -# 있습니다. 우리는 ``encoder`` 에서 ``GRU`` 레이어를 이런 식으로 사용합니다. +# 시퀀스의 배치)를 단순히 넣어주기만 하면 다른 비순환 계층처럼 사용할 수 +# 있습니다. 우리는 ``encoder`` 에서 ``GRU`` 계층을 이런 식으로 사용합니다. # 그 안이 실제로 어떻게 되어 있는지를 살펴보면, 매 시간 단계마다 은닉 상태를 # 계산하는 반복 프로세스가 존재합니다. 또 다른 방법은, 이 모듈을 매번 한 단위 # 시간만큼 수행할 수도 있습니다. 그 경우에는 우리가 ``decoder`` 모델을 다룰 @@ -1102,7 +1102,7 @@ def trainIters(model_name, voc, pairs, encoder, decoder, encoder_optimizer, deco # **연산 그래프:** # # 1) 인코더 모델로 입력을 포워드 패스합니다. -# 2) 인코더의 마지막 은닉 레이어가 디코더의 첫 번째 은닉 레이어의 입력이 되도록 준비합니다. +# 2) 인코더의 마지막 은닉 계층이 디코더의 첫 번째 은닉 계층의 입력이 되도록 준비합니다. # 3) 디코더의 첫 번째 입력을 SOS_token으로 초기화합니다. # 4) 디코더가 단어를 덧붙여 나갈 텐서를 초기화합니다. # 5) 반복적으로 각 단계마다 하나의 단어 토큰을 디코딩합니다. @@ -1122,7 +1122,7 @@ def __init__(self, encoder, decoder): def forward(self, input_seq, input_length, max_length): # 인코더 모델로 입력을 포워드 패스합니다 encoder_outputs, encoder_hidden = self.encoder(input_seq, input_length) - # 인코더의 마지막 은닉 레이어가 디코더의 첫 번째 은닉 레이어의 입력이 되도록 준비합니다 + # 인코더의 마지막 은닉 계층이 디코더의 첫 번째 은닉 계층의 입력이 되도록 준비합니다 decoder_hidden = encoder_hidden[:decoder.n_layers] # 디코더의 첫 번째 입력을 SOS_token으로 초기화합니다 decoder_input = torch.ones(1, 1, device=device, dtype=torch.long) * SOS_token @@ -1298,7 +1298,7 @@ def evaluateInput(encoder, decoder, searcher, voc): print_every = 1 save_every = 500 -# Dropout 레이어를 학습 모드로 둡니다 +# Dropout 계층을 학습 모드로 둡니다 encoder.train() decoder.train() @@ -1335,7 +1335,7 @@ def evaluateInput(encoder, decoder, searcher, voc): # 여러분의 모델과 채팅을 해보고 싶다면 다음 블록을 수행하면 됩니다. # -# Dropout 레이어를 평가( ``eval`` ) 모드로 설정합니다 +# Dropout 계층을 평가( ``eval`` ) 모드로 설정합니다 encoder.eval() decoder.eval() diff --git a/beginner_source/dcgan_faces_tutorial.py b/beginner_source/dcgan_faces_tutorial.py index 244c71947..396e40ff4 100644 --- a/beginner_source/dcgan_faces_tutorial.py +++ b/beginner_source/dcgan_faces_tutorial.py @@ -374,7 +374,7 @@ def forward(self, input): # 판별하는 전통적인 이진 분류 신경망으로 볼 수 있습니다. 이때 :math:`D` 는 # 3x64x64 이미지를 입력받아, Conv2d, BatchNorm2d, 그리고 LeakyReLU 계층을 통과시켜 # 데이터를 가공시키고, 마지막 출력에서 Sigmoid 함수를 이용하여 -# 0~1 사이의 확률값으로 조정합니다. 이 아키텍쳐는 필요한 경우 더 다양한 레이어를 쌓을 수 있지만, +# 0~1 사이의 확률값으로 조정합니다. 이 아키텍쳐는 필요한 경우 더 다양한 계층을 쌓을 수 있지만, # 배치 정규화와 LeakyReLU, 특히 보폭이 있는 (strided) 합성곱 계층을 # 사용하는 것에는 이유가 있습니다. # DCGAN 논문에서는 보폭이 있는 합성곱 계층을 사용하는 것이 신경망 내에서 스스로의 diff --git a/beginner_source/fgsm_tutorial.py b/beginner_source/fgsm_tutorial.py index 5c0d93cc4..5293d7844 100644 --- a/beginner_source/fgsm_tutorial.py +++ b/beginner_source/fgsm_tutorial.py @@ -157,7 +157,7 @@ def forward(self, x): # 미리 학습된 모델 읽어오기 model.load_state_dict(torch.load(pretrained_model, map_location=device)) -# 모델을 평가 모드로 설정하기. 드롭아웃 레이어들을 위해 사용됨 +# 모델을 평가 모드로 설정하기. 드롭아웃 계층들을 위해 사용됨 model.eval() diff --git a/beginner_source/finetuning_torchvision_models_tutorial.py b/beginner_source/finetuning_torchvision_models_tutorial.py index 68d0332cb..60c5fa141 100644 --- a/beginner_source/finetuning_torchvision_models_tutorial.py +++ b/beginner_source/finetuning_torchvision_models_tutorial.py @@ -23,9 +23,9 @@ # **미세 조정** 에서는, 사전 학습된 모델로 시작해 # 새로운 작업을 위해 모델의 매개변수 *모두* 를 업데이트 하여 본질적으로 전체 모델을 재학습합니다. # **특징 추출**에서는, 사전 학습된 모델로 시작해 -# 예측을 도출하는 최종 레이어의 가중치만 업데이트합니다. +# 예측을 도출하는 최종 계층의 가중치만 업데이트합니다. # 사전 학습된 CNN을 고정된 특징 추출기(feature-extractor)로 사용하고 -# 출력 레이어만 변경하기 때문에 이를 특징 추출이라고 합니다. +# 출력 계층만 변경하기 때문에 이를 특징 추출이라고 합니다. # 전송(transfer)에 대한 자세한 기술 정보는 # `여기 `__ 와 # `여기 `__ 를 재구성합니다. @@ -33,8 +33,8 @@ # 일반적으로 두 전이 학습 방법 모두 몇 가지 단계를 동일하게 따릅니다. # # - 사전 훈련된 모델을 초기화합니다. -# - 최종 레이어를 재구성하여 새 데이터 집합의 클래스 수와 동일한 수의 출력을 갖도록 합니다. -# - 새 데이터셋의 클래스 수와 동일한 출력 수를 갖도록 최종 레이어를 재구성합니다. +# - 최종 계층을 재구성하여 새 데이터 집합의 클래스 수와 동일한 수의 출력을 갖도록 합니다. +# - 새 데이터셋의 클래스 수와 동일한 출력 수를 갖도록 최종 계층을 재구성합니다. # - 훈련 중에 업데이트할 매개변수를 최적화 알고리즘에 맞게 정의합니다. # - 학습 단계를 실행합니다. # @@ -81,7 +81,7 @@ # ``feature_extract`` 는 미세 조정 또는 특징 추출 여부를 정의하는 부울(boolean)입니다. # ``feature_extract = False``이면 모델이 미세 조정되고 # 모든 모델의 매개변수가 업데이트됩니다. -# ``feature_extract = True``인 경우 마지막 레이어의 매개변수만 업데이트되고 +# ``feature_extract = True``인 경우 마지막 계층의 매개변수만 업데이트되고 # 다른 매개변수는 고정된 상태로 유지됩니다. # 최상위 데이터 디렉토리입니다. 여기서는 디렉토리 형식이 @@ -101,7 +101,7 @@ num_epochs = 15 # 특징 추출을 위한 플래그(flag)입니다. False일 경우, 전체 모델을 미세 조정하고 -# True일 경우 재형성된 레이어어의 매개변수만 업데이트합니다. +# True일 경우 재형성된 계층의 매개변수만 업데이트합니다. feature_extract = True @@ -220,7 +220,7 @@ def train_model(model, dataloaders, criterion, optimizer, num_epochs=25, is_ince # 기본적으로, 사전 학습된 모델을 읽어 들일 때 모든 매개변수가 # ``.requires_grad=True``로 설정되어 있으므로 # 처음부터 학습하거나 미세 조정하는 경우라면 괜찮습니다. -# 그러나 특징 추출 중이고 새로 초기화된 레이어에 대한 경사도만 계산하려는 경우 +# 그러나 특징 추출 중이고 새로 초기화된 계층에 대한 경사도만 계산하려는 경우 # 다른 모든 매개변수에는 경사도가 필요하지 않아야 합니다. # 이것은 나중에 더 이해를 할 수 있을 것입니다. # @@ -238,24 +238,24 @@ def set_parameter_requires_grad(model, feature_extracting): # 이제 가장 흥미로운 부분입니다. # 여기서는 각 네트워크의 재구성을 처리합니다. # 이 절차는 자동 절차가 아니며 각 모델마다 고유합니다. -# CNN 모델의 최종 레이어(FC layer라고도 불림)는 +# CNN 모델의 최종 계층(FC layer라고도 불림)는 # 데이터셋의 출력 클래스 수와 동일한 수의 노드를 가지고 있습니다. # 모든 모델은 이미 ImageNet에서 사전 학습 되었기 때문에 -# 각 클래스당 하나의 노드씩 1000 크기의 출력 레이어를 가지고 있습니다. +# 각 클래스당 하나의 노드씩 1000 크기의 출력 계층을 가지고 있습니다. # 여기서의 목표는 이전과 동일한 수의 입력을 갖고, -# 데이터셋의 클래스 수와 동일한 수의 출력을 갖도록 마지막 레이어를 재구성하는 것입니다. +# 데이터셋의 클래스 수와 동일한 수의 출력을 갖도록 마지막 계층을 재구성하는 것입니다. # 다음 섹션에서는 각 모델의 아키텍처를 # 개별적으로 변경하는 방법에 대해 설명하겠습니다. # 하지만 먼저, 미세 조정과 특징 추출의 차이점에 대한 # 한 가지 중요한 세부 사항이 있습니다. # -# 특징 추출 시 마지막 레이어의 매개변수만 업데이트 하고 싶을 때 -# 다시 말해, 재구성하는 레이어의 매개변수만 업데이트를 하고 싶은 경우가 있습니다. +# 특징 추출 시 마지막 계층의 매개변수만 업데이트 하고 싶을 때 +# 다시 말해, 재구성하는 계층의 매개변수만 업데이트를 하고 싶은 경우가 있습니다. # 이런 경우에는 변경하지 않는 매개변수의 경사도를 계산할 필요가 없으므로 # 효율성을 위해 .requires_grad 속성을 False로 설정합니다. # 기본적으로 이 속성은 True로 설정되어 있기 때문에 이 설정은 중요합니다. -# 그런 다음 새 레이어를 초기화할 때 기본적으로 새 매개변수에는 ``.requires_grad=True``가 있으므로 -# 새 레이어의 매개변수만 업데이트됩니다. +# 그런 다음 새 계층을 초기화할 때 기본적으로 새 매개변수에는 ``.requires_grad=True``가 있으므로 +# 새 계층의 매개변수만 업데이트됩니다. # 미세 조정할 때는 모든 .requires_grad를 기본값인 True로 설정할 수 있습니다. # # 마지막으로, inception_v3는 입력 크기를 (299,299)로 요구하지만, @@ -270,13 +270,13 @@ def set_parameter_requires_grad(model, feature_extracting): # 모두 torchvision 모델에서 사용할 수 있습니다. # 여기서는 데이터셋이 작고 클래스가 두 개 뿐인 Resnet18을 사용합니다. # 모델을 출력하면 아래 그림과 같이 -# 마지막 레이어가 완전히 연결된 레이어임을 알 수 있습니다. +# 마지막 계층이 완전히 연결된 계층임을 알 수 있습니다. # # :: # # (fc): Linear(in_features=512, out_features=1000, bias=True) # -# 입력 특징이 512개, 출력 특징이 2개인 선형 레이어가 되도록 +# 입력 특징이 512개, 출력 특징이 2개인 선형 계층이 되도록 # ``model.fc``를 다시 초기화해야 합니다. # # :: @@ -291,7 +291,7 @@ def set_parameter_requires_grad(model, feature_extracting): # Networks `__ 논문에 소개된 바 있으며 # ImageNet 데이터셋에서 최초로 매우 성공적인 CNN을 구현한 바 있습니다. # 모델의 아키텍처를 출력하면 모델 출력이 -# 분류기(classifier)의 6번째 레이어에서 나오는 것을 볼 수 있습니다. +# 분류기(classifier)의 6번째 계층에서 나오는 것을 볼 수 있습니다. # # :: # @@ -300,7 +300,7 @@ def set_parameter_requires_grad(model, feature_extracting): # (6): Linear(in_features=4096, out_features=1000, bias=True) # ) # -# 데이터셋과 함께 모델을 사용하려면 이 레이어를 다음과 같이 다시 초기화합니다. +# 데이터셋과 함께 모델을 사용하려면 이 계층을 다음과 같이 다시 초기화합니다. # # :: # @@ -311,10 +311,10 @@ def set_parameter_requires_grad(model, feature_extracting): # # VGG는 `Very Deep Convolutional Networks for # Large-Scale Image Recognition `__ 논문에서 소개되었습니다. -# Torchvision 다양한 길이와 배치 정규화 레이어가 있는 +# Torchvision 다양한 길이와 배치 정규화 계층이 있는 # 8가지 버전의 VGG를 제공합니다. # 여기서는 배치 정규화 기능이 있는 VGG-11을 사용합니다. -# 출력 레이어는 Alexnet과 유사합니다. +# 출력 계층은 Alexnet과 유사합니다. # # :: # @@ -323,7 +323,7 @@ def set_parameter_requires_grad(model, feature_extracting): # (6): Linear(in_features=4096, out_features=1000, bias=True) # ) # -# 따라서 동일한 기술을 사용해 출력 레이어를 수정합니다. +# 따라서 동일한 기술을 사용해 출력 계층을 수정합니다. # # :: # @@ -338,8 +338,8 @@ def set_parameter_requires_grad(model, feature_extracting): # AlexNet 수준의 정확도를 제공하면서 # 여기에 표시된 모델들과는 다른 출력 구조를 사용합니다. # Torchvision에는 두 가지 버전의 Squeezenet이 있고 여기서는 1.0 버전을 사용합니다. -# 출력은 분류기(classifier)의 첫 번째 레이어인 -# 1x1 합성곱 레이어에서 나옵니다. +# 출력은 분류기(classifier)의 첫 번째 계층인 +# 1x1 합성곱 계층에서 나옵니다. # # :: # @@ -350,7 +350,7 @@ def set_parameter_requires_grad(model, feature_extracting): # (3): AvgPool2d(kernel_size=13, stride=1, padding=0) # ) # -# 네트워크를 수정하기 위해 Conv2d 레이어를 다시 초기화하여 +# 네트워크를 수정하기 위해 Conv2d 계층을 다시 초기화하여 # 깊이 2의 특징 맵을 다음과 같이 출력합니다. # # :: @@ -364,13 +364,13 @@ def set_parameter_requires_grad(model, feature_extracting): # Networks `__ 논문에서 소개되었습니다. # Torchvision에는 4가지의 변형 Densenet이 있지만 # 여기서는 Densenet-121만 사용합니다. -# 출력 레이는 1024개의 입력 특징을 가진 선형 레이어 입니다. +# 출력 계층은 1024개의 입력 특징을 가진 선형 계층 입니다. # # :: # # (classifier): Linear(in_features=1024, out_features=1000, bias=True) # -# 네트워크를 재구성하기 위해 분류기(classifier)의 선형 레이어를 +# 네트워크를 재구성하기 위해 분류기(classifier)의 선형 계층을 # 다음과 같이 다시 초기화합니다. # # :: @@ -383,10 +383,10 @@ def set_parameter_requires_grad(model, feature_extracting): # 마지막으로 Inception v3은 `Rethinking the Inception # Architecture for Computer # Vision `__ 에서 처음 설명했습니다. -# 이 네트워크는 학습 시 두 개의 출력 레이어가 있다는 점이 독특합니다. +# 이 네트워크는 학습 시 두 개의 출력 계층이 있다는 점이 독특합니다. # 두 번째 출력은 보조(axuiliary) 출력으로 알려져 있으며 # 네트워크의 AuxLogits 부분에 포함되어 있습니다. -# 기본 출력은 네트워크 끝에 있는 선형 레이어이며 +# 기본 출력은 네트워크 끝에 있는 선형 계층이며 # 테스트할 때는 기본 출력만 고려합니다. # 읽어 들인 모델의 보조(auxiliary) 출력과 기본 출력은 다음과 같이 출력됩니다. # @@ -399,7 +399,7 @@ def set_parameter_requires_grad(model, feature_extracting): # ... # (fc): Linear(in_features=2048, out_features=1000, bias=True) # -# 이 모델을 미세 조정하려면 두 레이어를 +# 이 모델을 미세 조정하려면 두 계층을 # 다음과 같이 모두 재구성해야 합니다. # # :: @@ -538,7 +538,7 @@ def initialize_model(model_name, num_classes, feature_extract, use_pretrained=Tr # 사전 학습된 모델을 읽어 들인 후 구조를 재조정하기 전에 # ``feature_extract=True``인 경우 매개변수의 # 모든 ``.requires_grad`` 속성을 일일이 False로 설정한 것을 기억하세요. -# 그러면 재초기화된 레이어의 파라미터는 +# 그러면 재초기화된 계층의 파라미터는 # 기본적으로 ``.requires_grad=True``를 갖습니다. # 이제 *.requires_grad=True인 모든 매개변수가 # 최적화되어야 한다는 것을 알았습니다.* @@ -549,7 +549,7 @@ def initialize_model(model_name, num_classes, feature_extract, use_pretrained=Tr # 미세 조정할 때 이 목록은 길어야 하며 # 모든 모델의 매개변수를 포함해야 합니다. # 하지만, 특징을 추출할 때는 이 목록이 짧아야 하며 -# 재구성된 레이어의 가중치와 편향(bias)만 포함해야 합니다. +# 재구성된 계층의 가중치와 편향(bias)만 포함해야 합니다. # # GPU로 모델 전송 diff --git a/beginner_source/introyt/introyt1_tutorial.py b/beginner_source/introyt/introyt1_tutorial.py index a56783a6a..296649ec6 100644 --- a/beginner_source/introyt/introyt1_tutorial.py +++ b/beginner_source/introyt/introyt1_tutorial.py @@ -236,7 +236,7 @@ def num_flat_features(self, x): # 위에서 몇가지 중요한 일들이 일어나고 있습니다. # # 첫째, ``LeNet`` 클래스를 인스턴스화하고 ``net`` 객체를 출력합니다. -# ``torch.nn.Module`` 의 하위 클래스는 생성된 레이어의 모양과 파라미터를 알려줍니다. +# ``torch.nn.Module`` 의 하위 클래스는 생성된 계층의 모양과 파라미터를 알려줍니다. # 모델의 처리 결과를 얻으려는 경우, 모델의 편리한 기능을 제공할 수 있습니다. # # 아래에서 1 채널과 32x32 이미지크기를 가진 더미 입력을 생성합니다. diff --git a/beginner_source/introyt/tensorboardyt_tutorial.py b/beginner_source/introyt/tensorboardyt_tutorial.py index 19bbb2708..9c6d08f1a 100644 --- a/beginner_source/introyt/tensorboardyt_tutorial.py +++ b/beginner_source/introyt/tensorboardyt_tutorial.py @@ -220,7 +220,7 @@ def forward(self, x): # 검증 셋과 비교 running_vloss = 0.0 - # 평가 모드에서는 일부 모델의 특정 작업을 생략할 수 있습니다 예시: 드롭아웃 레이어 + # 평가 모드에서는 일부 모델의 특정 작업을 생략할 수 있습니다 예시: 드롭아웃 계층 net.train(False) # 평가 모드로 전환, 예시: 정규화(regularisation) 끄기 for j, vdata in enumerate(validation_loader, 0): vinputs, vlabels = vdata diff --git a/beginner_source/nlp/sequence_models_tutorial.py b/beginner_source/nlp/sequence_models_tutorial.py index 7f61e5231..e76d5fe23 100644 --- a/beginner_source/nlp/sequence_models_tutorial.py +++ b/beginner_source/nlp/sequence_models_tutorial.py @@ -165,7 +165,7 @@ def __init__(self, embedding_dim, hidden_dim, vocab_size, tagset_size): # 차원이 hidden_dim인 은닉 상태를 출력합니다. self.lstm = nn.LSTM(embedding_dim, hidden_dim) - # 은닉 상태 공간에서 태그 공간으로 매핑하는 선형 레이어 + # 은닉 상태 공간에서 태그 공간으로 매핑하는 선형 계층 self.hidden2tag = nn.Linear(hidden_dim, tagset_size) def forward(self, sentence): diff --git a/beginner_source/nn_tutorial.py b/beginner_source/nn_tutorial.py index b68b5a27e..c87d6a9c8 100644 --- a/beginner_source/nn_tutorial.py +++ b/beginner_source/nn_tutorial.py @@ -259,7 +259,7 @@ def accuracy(out, yb): # (라이브러리의 다른 부분에는 클래스가 포함되어 있습니다.) # 다양한 손실 및 활성화 함수뿐만 아니라, 풀링(pooling) 함수와 같이 신경망을 만드는데 # 편리한 몇 가지 함수도 여기에서 찾을 수 있습니다. -# (컨볼루션(convolution) 연산, 선형(linear) 레이어, 등을 수행하는 함수도 있지만, +# (컨볼루션(convolution) 연산, 선형(linear) 계층, 등을 수행하는 함수도 있지만, # 앞으로 보시겠지만 대개는 라이브러리의 다른 부분을 사용하여 더 잘 처리할 수 있습니다.) # # 만약 여러분들이 음의 로그 우도 손실과 로그 소프트맥스 (log softmax) 활성화 함수를 사용하는 경우, @@ -375,8 +375,8 @@ def fit(): # 초기화하고, ``xb @ self.weights + self.bias`` 를 계산하는 대신에, # 위의 모든 것을 해줄 PyTorch 클래스인 # `nn.Linear `_ 를 선형 -# 레이어로 사용합니다. -# PyTorch 에는 다양한 유형의 코드를 크게 단순화 할 수 있는 미리 정의된 레이어가 있고 이는 또한 +# 계층으로 사용합니다. +# PyTorch 에는 다양한 유형의 코드를 크게 단순화 할 수 있는 미리 정의된 계층이 있고 이는 또한 # 종종 기존 코드보다 속도를 빠르게 합니다. class Mnist_Logistic(nn.Module): @@ -585,7 +585,7 @@ def get_model(): # 각 에폭이 끝날 때 검증 손실을 계산하고 프린트 할 것입니다. # # (훈련 전에 항상 ``model.train()`` 을 호출하고, 추론(inference) 전에 ``model.eval()`` -# 을 호출합니다, 이는 ``nn.BatchNorm2d`` 및 ``nn.Dropout`` 과 같은 레이어에서 +# 을 호출합니다, 이는 ``nn.BatchNorm2d`` 및 ``nn.Dropout`` 과 같은 계층에서 # 이러한 다른 단계(훈련, 추론) 에 대한 적절한 동작이 일어나게 하기 위함입니다.) model, opt = get_model() @@ -672,13 +672,13 @@ def get_data(train_ds, valid_ds, bs): # CNN 으로 넘어가기 # -------------------- # -# 이제 3개의 컨볼루션 레이어로 신경망을 구축할 것입니다. +# 이제 3개의 컨볼루션 계층으로 신경망을 구축할 것입니다. # 이전 섹션의 어떤 함수도 모델의 형식에 대해 가정하지 않기 때문에, # 별도의 수정없이 CNN을 학습하는 데 사용할 수 있습니다. # # Pytorch의 사전정의된 # `Conv2d `_ 클래스를 -# 컨볼루션 레이어로 사용합니다. 3개의 컨볼루션 레이어로 CNN을 정의합니다. +# 컨볼루션 계층으로 사용합니다. 3개의 컨볼루션 계층으로 CNN을 정의합니다. # 각 컨볼루션 뒤에는 ReLU가 있습니다. 마지막으로 평균 풀링(average pooling)을 수행합니다. # (``view`` 는 PyTorch의 NumPy ``reshape`` 버전입니다.) @@ -719,10 +719,10 @@ def forward(self, xb): # ``Sequential`` 객체는 그 안에 포함된 각 모듈을 순차적으로 실행합니다. # 이것은 우리의 신경망을 작성하는 더 간단한 방법입니다. # -# 이를 활용하려면 주어진 함수에서 **사용자정의 레이어(custom layer)** 를 쉽게 +# 이를 활용하려면 주어진 함수에서 **사용자정의 계층(custom layer)** 을 쉽게 # 정의할 수 있어야 합니다. -# 예를 들어, PyTorch에는 `view` 레이어가 없으므로 우리의 신경망 용으로 만들어야 합니다. -# ``Lambda`` 는 ``Sequential`` 로 신경망을 정의할 때 사용할 수 있는 레이어를 생성할 것입니다. +# 예를 들어, PyTorch에는 `view` 계층이 없으므로 우리의 신경망 용으로 만들어야 합니다. +# ``Lambda`` 는 ``Sequential`` 로 신경망을 정의할 때 사용할 수 있는 계층을 생성할 것입니다. class Lambda(nn.Module): def __init__(self, func): @@ -764,7 +764,7 @@ def preprocess(x): # - 최종적으로 CNN 그리드 크기는 4\*4 라고 가정합니다. (이것은 우리가 사용한 평균 풀링 커널 크기 때문입니다.) # # 이 두 가지 가정을 제거하여 모델이 모든 2d 단일 채널(channel) 이미지에서 작동하도록 하겠습니다. -# 먼저 초기 Lambda 레이어를 제거하고 데이터 전처리를 제네레이터(generator)로 이동시킬 수 있습니다: +# 먼저 초기 Lambda 계층을 제거하고 데이터 전처리를 제네레이터(generator)로 이동시킬 수 있습니다: def preprocess(x, y): return x.view(-1, 1, 28, 28), y @@ -865,15 +865,15 @@ def preprocess(x, y): # # - ``torch.nn``: # -# + ``Module``: 함수처럼 동작하지만, 또한 상태(state) (예를 들어, 신경망의 레이어 가중치)를 +# + ``Module``: 함수처럼 동작하지만, 또한 상태(state) (예를 들어, 신경망의 계층 가중치)를 # 포함할 수 있는 호출 가능한 오브젝트를 생성합니다. # 이는 포함된 ``Parameter`` (들)가 어떤 것인지 알고, 모든 기울기를 0으로 설정하고 가중치 # 업데이트 등을 위해 반복할 수 있습니다. # + ``Parameter``: ``Module`` 에 역전파 동안 업데이트가 필요한 가중치가 있음을 알려주는 # 텐서용 래퍼입니다. `requires_grad` 속성이 설정된 텐서만 업데이트 됩니다. # + ``functional``: 활성화 함수, 손실 함수 등을 포함하는 모듈 (관례에 따라 일반적으로 -# ``F`` 네임스페이스로 임포트 됩니다) 이고, 물론 컨볼루션 및 선형 레이어 등에 대해서 -# 상태를 저장하지않는(non-stateful) 버전의 레이어를 포함합니다. +# ``F`` 네임스페이스로 임포트 됩니다) 이고, 물론 컨볼루션 및 선형 계층 등에 대해서 +# 상태를 저장하지않는(non-stateful) 버전의 계층을 포함합니다. # - ``torch.optim``: 역전파 단계에서 ``Parameter`` 의 가중치를 업데이트하는, # ``SGD`` 와 같은 옵티마이저를 포함합니다. # - ``Dataset``: ``TensorDataset`` 과 같이 PyTorch와 함께 제공되는 클래스를 포함하여 ``__len__`` 및 diff --git a/beginner_source/torchtext_translation.py b/beginner_source/torchtext_translation.py index 4656ed897..89408483e 100644 --- a/beginner_source/torchtext_translation.py +++ b/beginner_source/torchtext_translation.py @@ -142,7 +142,7 @@ def generate_batch(data_batch): # 참고 : 이 튜토리얼에서 사용하는 모델은 언어 번역을 위해 사용할 예시 모델입니다. 이 모델을 사용하는 것은 # 이 작업에 적당한 표준 모델이기 때문이지, 번역에 적합한 모델이기 때문은 아닙니다. 여러분이 최신 기술 트렌드를 # 잘 따라가고 있다면 잘 아시겠지만, 현재 번역에서 가장 뛰어난 모델은 Transformers입니다. PyTorch가 -# Transformer 레이어를 구현한 내용은 `여기 `__ +# Transformer 계층을 구현한 내용은 `여기 `__ # 에서 확인할 수 있으며 이 튜토리얼의 모델이 사용하는 "attention" 은 Transformer 모델에서 제안하는 # 멀티 헤드 셀프 어텐션(multi-headed self-attention) 과는 다르다는 점을 알려드립니다. diff --git a/beginner_source/transformer_tutorial.py b/beginner_source/transformer_tutorial.py index 5fe3bc27e..a2c659f60 100644 --- a/beginner_source/transformer_tutorial.py +++ b/beginner_source/transformer_tutorial.py @@ -30,15 +30,15 @@ ###################################################################### # 이 튜토리얼에서, 우리는 ``nn.TransformerEncoder`` 모델을 언어 모델링(language modeling) 과제에 대해서 학습시킬 것입니다. # 언어 모델링 과제는 주어진 단어 (또는 단어의 시퀀스) 가 다음에 이어지는 단어 시퀀스를 따를 가능성(likelihood)에 대한 확률을 할당하는 것입니다. -# 먼저, 토큰(token) 들의 시퀀스가 임베딩(embedding) 레이어로 전달되며, 이어서 포지셔널 인코딩(positional encoding) 레이어가 각 단어의 순서를 설명합니다. +# 먼저, 토큰(token) 들의 시퀀스가 임베딩(embedding) 계층으로 전달되며, 이어서 포지셔널 인코딩(positional encoding) 계층이 각 단어의 순서를 설명합니다. # (더 자세한 설명은 다음 단락을 참고해주세요.) # ``nn.TransformerEncoder`` 는 여러 개의 # `nn.TransformerEncoderLayer `__ -# 레이어로 구성되어 있습니다. -# ``nn.TransformerEncoder`` 내부의 셀프-어텐션(self-attention) 레이어들은 시퀀스 안에서의 이전 포지션에만 집중하도록 허용되기 때문에, +# 계층으로 구성되어 있습니다. +# ``nn.TransformerEncoder`` 내부의 셀프-어텐션(self-attention) 계층들은 시퀀스 안에서의 이전 포지션에만 집중하도록 허용되기 때문에, # 입력(input) 순서와 함께, 정사각 형태의 어텐션 마스크(attention mask) 가 필요합니다. # 언어 모델링 과제를 위해서, 미래의 포지션에 있는 모든 토큰들은 마스킹 되어야(가려져야) 합니다. -# 실제 단어를 얻기 위해서, ``nn.TransformerEncoder`` 의 출력은 로그-소프트맥스(log-Softmax) 로 이어지는 최종 선형(Linear) 레이어로 전달 됩니다. +# 실제 단어를 얻기 위해서, ``nn.TransformerEncoder`` 의 출력은 로그-소프트맥스(log-Softmax) 로 이어지는 최종 선형(Linear) 계층으로 전달 됩니다. # import math diff --git a/intermediate_source/char_rnn_classification_tutorial.py b/intermediate_source/char_rnn_classification_tutorial.py index 2be448c6a..5d55c7cbf 100644 --- a/intermediate_source/char_rnn_classification_tutorial.py +++ b/intermediate_source/char_rnn_classification_tutorial.py @@ -54,7 +54,7 @@ # (하지만 유니코드에서 ASCII로 변환은 해야 합니다) # # 첫번째 단계는 데이터를 정의하고 정리하는 것입니다. 초기에는 유니코드를 일반 ASCII로 변환하여 -# RNN 입력 레이어를 제한해야 합니다. 이는 유니코드 문자열을 ASCII로 변환하고 허용된 문자의 작은 집합만을 허용하여 이루어집니다. +# RNN 입력 계층을 제한해야 합니다. 이는 유니코드 문자열을 ASCII로 변환하고 허용된 문자의 작은 집합만을 허용하여 이루어집니다. import string import unicodedata @@ -72,7 +72,7 @@ def unicodeToAscii(s): ) ######################### -# 유니코드 알파벳 이름을 일반 ASCII로 변환하는 예시입니다. 이렇게 하면 입력 레이어를 단순화할 수 있습니다. +# 유니코드 알파벳 이름을 일반 ASCII로 변환하는 예시입니다. 이렇게 하면 입력 계층을 단순화할 수 있습니다. # print (f"converting 'Ślusàrski' to {unicodeToAscii('Ślusàrski')}") diff --git a/intermediate_source/char_rnn_generation_tutorial.py b/intermediate_source/char_rnn_generation_tutorial.py index dea92fb53..642b9b28e 100644 --- a/intermediate_source/char_rnn_generation_tutorial.py +++ b/intermediate_source/char_rnn_generation_tutorial.py @@ -138,7 +138,7 @@ def readLines(filename): # 우리는 출력을 다음 문자의 확률로 해석합니다. 샘플링 할 때, # 가장 확률이 높은 문자가 다음 입력 문자로 사용됩니다. # -# 더 나은 동작을 위해 두 번째 선형 레이어 +# 더 나은 동작을 위해 두 번째 선형 계층 # ``o2o`` (은닉과 출력을 결합한 후) 를 추가했습니다 . # 또한 Drop-out 계층이 있습니다. 이 계층은 주어진 확률(여기서는 0.1)로 # `무작위로 입력을 0 # `__ 으로 만듭니다. diff --git a/intermediate_source/pipeline_tutorial.py b/intermediate_source/pipeline_tutorial.py index 973f8ebb1..9093720d1 100644 --- a/intermediate_source/pipeline_tutorial.py +++ b/intermediate_source/pipeline_tutorial.py @@ -229,7 +229,7 @@ def get_batch(source, i): # 여러 GPU를 다루기 위해 프로세스 하나만 사용하고 있기 때문입니다. # # 그런 다음 파이프라인은 한 GPU에 8개의 트랜스포머와 -# 다른 GPU에 8개의 트랜스포머 레이어로 초기화됩니다. +# 다른 GPU에 8개의 트랜스포머 계층으로 초기화됩니다. # # .. note:: # 효율성을 위해 ``Pipe`` 에 전달된 ``nn.Sequential`` 이 diff --git a/intermediate_source/seq2seq_translation_tutorial.py b/intermediate_source/seq2seq_translation_tutorial.py index edfc6f01d..0c94a5eb4 100644 --- a/intermediate_source/seq2seq_translation_tutorial.py +++ b/intermediate_source/seq2seq_translation_tutorial.py @@ -792,7 +792,7 @@ def evaluateRandomly(encoder, decoder, n=10): ###################################################################### # # -# 드롭아웃(dropout) 레이어들을 평가 (``eval``) 모드로 설정합니다. +# 드롭아웃(dropout) 계층들을 평가 (``eval``) 모드로 설정합니다. encoder.eval() decoder.eval() @@ -860,7 +860,7 @@ def evaluateAndShowAttention(input_sentence): # - ``word2vec`` 또는 ``GloVe`` 같은 미리 학습된 word embedding 으로 # embedding 을 교체하십시오 # -# - 더 많은 레이어, 은닉 유닛, 더 많은 문장을 사용하십시오. +# - 더 많은 계층, 은닉 유닛, 더 많은 문장을 사용하십시오. # 학습 시간과 결과를 비교해 보십시오 # - 만약 같은 구문 두개의 쌍으로 된 번역 파일을 이용한다면, # (``I am test \t I am test``), 이것을 오토인코더로 diff --git a/recipes_source/recipes/tuning_guide.py b/recipes_source/recipes/tuning_guide.py index c2e19a5e8..9316bff64 100644 --- a/recipes_source/recipes/tuning_guide.py +++ b/recipes_source/recipes/tuning_guide.py @@ -142,7 +142,7 @@ def gelu(x): # 효율을 개선할 수 있습니다. # # 체크포인트 저장할 대상은 신중하게 선택해야 합니다. 가장 좋은 방법은 재계산 비용이 적은 대규모 -# 레이어의 출력을 저장하지 않는 것입니다. 예를 들어, 활성화 함수(예시: ``ReLU`` , ``Sigmoid`` +# 계층의 출력을 저장하지 않는 것입니다. 예를 들어, 활성화 함수(예시: ``ReLU`` , ``Sigmoid`` # , ``Tanh`` ), up/down 샘플링, 작은 누적 깊이(accumulation depth)를 가진 행렬-벡터 연산 # 등이 체크포인트 저장 대상으로 적합합니다. # @@ -408,8 +408,8 @@ def gelu(x): # # * `Deep Learning Performance Documentation # `_ -# 에서 자세한 정보와 레이어 유형에 따른 가이드라인을 참조하세요. -# * 레이어 크기가 고정되지 않고 다른 매개변수에서 유도되는 경우에도 명시적으로 패딩할 수 있습니다. +# 에서 자세한 정보와 계층 유형에 따른 가이드라인을 참조하세요. +# * 계층 크기가 고정되지 않고 다른 매개변수에서 유도되는 경우에도 명시적으로 패딩할 수 있습니다. # (예시: NLP 모델의 어휘 크기 등). # # * AMP 활성화하기 @@ -478,10 +478,10 @@ def gelu(x): # 따르고 필요한 변화도 all-reduce를 수행해야 합니다. ############################################################################### -# ``DistributedDataParallel(find_unused_parameters=True)`` 를 사용할 때 생성자와 실행 레이어 순서를 일치시키는 방법 +# ``DistributedDataParallel(find_unused_parameters=True)`` 를 사용할 때 생성자와 실행 계층 순서를 일치시키는 방법 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # `torch.nn.parallel.DistributedDataParallel `_ -# 은 ``find_unused_parameters=True`` 와 함께 모델 생성자에서의 레이어와 파라미터 순서를 +# 은 ``find_unused_parameters=True`` 와 함께 모델 생성자에서의 계층과 파라미터 순서를 # 사용하여 ``DistributedDataParallel`` 변화도 all-reduce를 위한 버킷을 만듭니다. # ``DistributedDataParallel`` 은 all-reduce를 역전파와 겹치게 수행합니다. 특정 버킷에 대한 # all-reduce는 주어진 버킷의 모든 파라미터에 대한 변화도가 모두 준비되었을 때 비동기적으로 작동됩니다. @@ -493,7 +493,7 @@ def gelu(x): # # ``find_unused_parameters=False`` 가 (기본 설정)인 ``DistributedDataParallel`` 은 # 역전파 중에 발견된 연산 순서를 기반으로 자동으로 버킷을 형성합니다. -# ``find_unused_parameters=False`` 를 사용할 때는 최적의 성능을 달성하기 위해 레이어나 +# ``find_unused_parameters=False`` 를 사용할 때는 최적의 성능을 달성하기 위해 계층이나 # 파라미터의 순서를 재조정할 필요가 없습니다. ############################################################################### diff --git a/recipes_source/recipes/warmstarting_model_using_parameters_from_a_different_model.py b/recipes_source/recipes/warmstarting_model_using_parameters_from_a_different_model.py index 0a362a251..2a561014e 100644 --- a/recipes_source/recipes/warmstarting_model_using_parameters_from_a_different_model.py +++ b/recipes_source/recipes/warmstarting_model_using_parameters_from_a_different_model.py @@ -118,7 +118,7 @@ def forward(self, x): # 4. 모델 B로 불러오기 # ~~~~~~~~~~~~~~~~~~~~~~~ # -# 한 레이어의 매개변수를 다른 레이어로 불러오려 하는데 일부 키가 매치되지 +# 한 계층의 매개변수를 다른 계층으로 불러오려 하는데 일부 키가 매치되지 # 않는 상황이라고 해 봅시다. 그럴 때는 불러오려 하는 state_dict 의 # 매개변수 키의 이름을 바꿔서, 불러온 모델을 저장하려는 모델의 키와 # 매치되도록 해 주면 됩니다.