| 
 | 1 | +<!--Copyright 2022 The HuggingFace Team. All rights reserved.  | 
 | 2 | + | 
 | 3 | +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  | 
 | 4 | +the License. You may obtain a copy of the License at  | 
 | 5 | + | 
 | 6 | +http://www.apache.org/licenses/LICENSE-2.0  | 
 | 7 | + | 
 | 8 | +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  | 
 | 9 | +an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  | 
 | 10 | +specific language governing permissions and limitations under the License.  | 
 | 11 | +-->  | 
 | 12 | + | 
 | 13 | +# 맞춤형 아키텍처 만들기[[create-a-custom-architecture]]  | 
 | 14 | + | 
 | 15 | +[`AutoClass`](model_doc/auto)는 모델 아키텍처를 자동으로 추론하고 미리 학습된 configuration과 가중치를 다운로드합니다. 일반적으로 체크포인트에 구애받지 않는 코드를 생성하려면 `AutoClass`를 사용하는 것이 좋습니다. 하지만 특정 모델 파라미터를 보다 세밀하게 제어하고자 하는 사용자는 몇 가지 기본 클래스만으로 커스텀 🤗 Transformers 모델을 생성할 수 있습니다. 이는 🤗 Transformers 모델을 연구, 교육 또는 실험하는 데 관심이 있는 모든 사용자에게 특히 유용할 수 있습니다. 이 가이드에서는 'AutoClass'를 사용하지 않고 커스텀 모델을 만드는 방법에 대해 알아보겠습니다:  | 
 | 16 | + | 
 | 17 | +- 모델 configuration을 가져오고 사용자 지정합니다.  | 
 | 18 | +- 모델 아키텍처를 생성합니다.  | 
 | 19 | +- 텍스트에 사용할 느리거나 빠른 토큰화기를 만듭니다.  | 
 | 20 | +- 비전 작업을 위한 이미지 프로세서를 생성합니다.  | 
 | 21 | +- 오디오 작업을 위한 특성 추출기를 생성합니다.  | 
 | 22 | +- 멀티모달 작업용 프로세서를 생성합니다.  | 
 | 23 | + | 
 | 24 | +## Configuration[[configuration]]  | 
 | 25 | + | 
 | 26 | +[configuration](main_classes/configuration)은 모델의 특정 속성을 나타냅니다. 각 모델 구성에는 서로 다른 속성이 있습니다. 예를 들어, 모든 NLP 모델에는 `hidden_size`, `num_attention_heads`, `num_hidden_layers` 및 `vocab_size` 속성이 공통으로 있습니다. 이러한 속성은 모델을 구성할 attention heads 또는 hidden layers의 수를 지정합니다.  | 
 | 27 | + | 
 | 28 | +[DistilBERT](model_doc/distilbert) 속성을 검사하기 위해 [`DistilBertConfig`]에 접근하여 자세히 살펴봅니다:  | 
 | 29 | + | 
 | 30 | +```py  | 
 | 31 | +>>> from transformers import DistilBertConfig  | 
 | 32 | + | 
 | 33 | +>>> config = DistilBertConfig()  | 
 | 34 | +>>> print(config)  | 
 | 35 | +DistilBertConfig {  | 
 | 36 | +  "activation": "gelu",  | 
 | 37 | +  "attention_dropout": 0.1,  | 
 | 38 | +  "dim": 768,  | 
 | 39 | +  "dropout": 0.1,  | 
 | 40 | +  "hidden_dim": 3072,  | 
 | 41 | +  "initializer_range": 0.02,  | 
 | 42 | +  "max_position_embeddings": 512,  | 
 | 43 | +  "model_type": "distilbert",  | 
 | 44 | +  "n_heads": 12,  | 
 | 45 | +  "n_layers": 6,  | 
 | 46 | +  "pad_token_id": 0,  | 
 | 47 | +  "qa_dropout": 0.1,  | 
 | 48 | +  "seq_classif_dropout": 0.2,  | 
 | 49 | +  "sinusoidal_pos_embds": false,  | 
 | 50 | +  "transformers_version": "4.16.2",  | 
 | 51 | +  "vocab_size": 30522  | 
 | 52 | +}  | 
 | 53 | +```  | 
 | 54 | +
  | 
 | 55 | +[`DistilBertConfig`]는 기본 [`DistilBertModel`]을 빌드하는 데 사용되는 모든 기본 속성을 표시합니다. 모든 속성은 커스터마이징이 가능하므로 실험을 위한 공간을 만들 수 있습니다. 예를 들어 기본 모델을 다음과 같이 커스터마이즈할 수 있습니다:  | 
 | 56 | +
  | 
 | 57 | +- `activation` 파라미터로 다른 활성화 함수를 사용해 보세요.  | 
 | 58 | +- `attention_dropout` 파라미터를 사용하여 어텐션 확률에 더 높은 드롭아웃 비율을 사용하세요.  | 
 | 59 | +
  | 
 | 60 | +```py  | 
 | 61 | +>>> my_config = DistilBertConfig(activation="relu", attention_dropout=0.4)  | 
 | 62 | +>>> print(my_config)  | 
 | 63 | +DistilBertConfig {  | 
 | 64 | +  "activation": "relu",  | 
 | 65 | +  "attention_dropout": 0.4,  | 
 | 66 | +  "dim": 768,  | 
 | 67 | +  "dropout": 0.1,  | 
 | 68 | +  "hidden_dim": 3072,  | 
 | 69 | +  "initializer_range": 0.02,  | 
 | 70 | +  "max_position_embeddings": 512,  | 
 | 71 | +  "model_type": "distilbert",  | 
 | 72 | +  "n_heads": 12,  | 
 | 73 | +  "n_layers": 6,  | 
 | 74 | +  "pad_token_id": 0,  | 
 | 75 | +  "qa_dropout": 0.1,  | 
 | 76 | +  "seq_classif_dropout": 0.2,  | 
 | 77 | +  "sinusoidal_pos_embds": false,  | 
 | 78 | +  "transformers_version": "4.16.2",  | 
 | 79 | +  "vocab_size": 30522  | 
 | 80 | +}  | 
 | 81 | +```  | 
 | 82 | + | 
 | 83 | +사전 학습된 모델 속성은 [`~PretrainedConfig.from_pretrained`] 함수에서 수정할 수 있습니다:  | 
 | 84 | + | 
 | 85 | +```py  | 
 | 86 | +>>> my_config = DistilBertConfig.from_pretrained("distilbert-base-uncased", activation="relu", attention_dropout=0.4)  | 
 | 87 | +```  | 
 | 88 | + | 
 | 89 | +모델 구성이 만족스러우면 [`~PretrainedConfig.save_pretrained`]로 저장할 수 있습니다. 설정 파일은 지정된 작업 경로에 JSON 파일로 저장됩니다:  | 
 | 90 | + | 
 | 91 | +```py  | 
 | 92 | +>>> my_config.save_pretrained(save_directory="./your_model_save_path")  | 
 | 93 | +```  | 
 | 94 | + | 
 | 95 | +configuration 파일을 재사용하려면 [`~PretrainedConfig.from_pretrained`]를 사용하여 가져오세요:  | 
 | 96 | + | 
 | 97 | +```py  | 
 | 98 | +>>> my_config = DistilBertConfig.from_pretrained("./your_model_save_path/config.json")  | 
 | 99 | +```  | 
 | 100 | + | 
 | 101 | +<Tip>  | 
 | 102 | + | 
 | 103 | +configuration 파일을 딕셔너리로 저장하거나 사용자 정의 configuration 속성과 기본 configuration 속성의 차이점만 저장할 수도 있습니다! 자세한 내용은 [configuration](main_classes/configuration) 문서를 참조하세요.  | 
 | 104 | + | 
 | 105 | +</Tip>  | 
 | 106 | + | 
 | 107 | +## 모델[[model]]  | 
 | 108 | + | 
 | 109 | +다음 단계는 [모델(model)](main_classes/models)을 만드는 것입니다. 느슨하게 아키텍처라고도 불리는 모델은 각 계층이 수행하는 동작과 발생하는 작업을 정의합니다. configuration의 `num_hidden_layers`와 같은 속성은 아키텍처를 정의하는 데 사용됩니다. 모든 모델은 기본 클래스 [`PreTrainedModel`]과 입력 임베딩 크기 조정 및 셀프 어텐션 헤드 가지 치기와 같은 몇 가지 일반적인 메소드를 공유합니다. 또한 모든 모델은 [`torch.nn.Module`](https://pytorch.org/docs/stable/generated/torch.nn.Module.html), [`tf.keras.Model`](https://www.tensorflow.org/api_docs/python/tf/keras/Model) 또는 [`flax.linen.Module`](https://flax.readthedocs.io/en/latest/flax.linen.html#module)의 서브클래스이기도 합니다. 즉, 모델은 각 프레임워크의 사용법과 호환됩니다.  | 
 | 110 | + | 
 | 111 | +<frameworkcontent>  | 
 | 112 | +<pt>  | 
 | 113 | +사용자 지정 configuration 속성을 모델에 가져옵니다:  | 
 | 114 | + | 
 | 115 | +```py  | 
 | 116 | +>>> from transformers import DistilBertModel  | 
 | 117 | + | 
 | 118 | +>>> my_config = DistilBertConfig.from_pretrained("./your_model_save_path/config.json")  | 
 | 119 | +>>> model = DistilBertModel(my_config)  | 
 | 120 | +```  | 
 | 121 | + | 
 | 122 | +이제 사전 학습된 가중치 대신 임의의 값을 가진 모델이 생성됩니다. 이 모델을 훈련하기 전까지는 유용하게 사용할 수 없습니다. 훈련은 비용과 시간이 많이 소요되는 프로세스입니다. 일반적으로 훈련에 필요한 리소스의 일부만 사용하면서 더 나은 결과를 더 빨리 얻으려면 사전 훈련된 모델을 사용하는 것이 좋습니다.  | 
 | 123 | + | 
 | 124 | +사전 학습된 모델을 [`~PreTrainedModel.from_pretrained`]로 생성합니다:  | 
 | 125 | + | 
 | 126 | +```py  | 
 | 127 | +>>> model = DistilBertModel.from_pretrained("distilbert-base-uncased")  | 
 | 128 | +```  | 
 | 129 | + | 
 | 130 | +🤗 Transformers에서 제공한 모델의 사전 학습된 가중치를 사용하는 경우 기본 모델 configuration을 자동으로 불러옵니다. 그러나 원하는 경우 기본 모델 configuration 속성의 일부 또는 전부를 사용자 지정으로 바꿀 수 있습니다:  | 
 | 131 | + | 
 | 132 | +```py  | 
 | 133 | +>>> model = DistilBertModel.from_pretrained("distilbert-base-uncased", config=my_config)  | 
 | 134 | +```  | 
 | 135 | +</pt>  | 
 | 136 | +<tf>  | 
 | 137 | +사용자 지정 configuration 속성을 모델에 불러옵니다:  | 
 | 138 | + | 
 | 139 | +```py  | 
 | 140 | +>>> from transformers import TFDistilBertModel  | 
 | 141 | + | 
 | 142 | +>>> my_config = DistilBertConfig.from_pretrained("./your_model_save_path/my_config.json")  | 
 | 143 | +>>> tf_model = TFDistilBertModel(my_config)  | 
 | 144 | +```  | 
 | 145 | + | 
 | 146 | +이제 사전 학습된 가중치 대신 임의의 값을 가진 모델이 생성됩니다. 이 모델을 훈련하기 전까지는 유용하게 사용할 수 없습니다. 훈련은 비용과 시간이 많이 소요되는 프로세스입니다. 일반적으로 훈련에 필요한 리소스의 일부만 사용하면서 더 나은 결과를 더 빨리 얻으려면 사전 훈련된 모델을 사용하는 것이 좋습니다.  | 
 | 147 | + | 
 | 148 | +사전 학습된 모델을 [`~TFPreTrainedModel.from_pretrained`]로 생성합니다:  | 
 | 149 | + | 
 | 150 | +```py  | 
 | 151 | +>>> tf_model = TFDistilBertModel.from_pretrained("distilbert-base-uncased")  | 
 | 152 | +```  | 
 | 153 | + | 
 | 154 | +🤗 Transformers에서 제공한 모델의 사전 학습된 가중치를 사용하는 경우 기본 모델 configuration을 자동으로 불러옵니다. 그러나 원하는 경우 기본 모델 configuration 속성의 일부 또는 전부를 사용자 지정으로 바꿀 수 있습니다:  | 
 | 155 | + | 
 | 156 | +```py  | 
 | 157 | +>>> tf_model = TFDistilBertModel.from_pretrained("distilbert-base-uncased", config=my_config)  | 
 | 158 | +```  | 
 | 159 | +</tf>  | 
 | 160 | +</frameworkcontent>  | 
 | 161 | + | 
 | 162 | +### 모델 헤드[[model-heads]]  | 
 | 163 | + | 
 | 164 | +이 시점에서 *은닉 상태(hidden state)*를 출력하는 기본 DistilBERT 모델을 갖게 됩니다. 은닉 상태는 최종 출력을 생성하기 위해 모델 헤드에 입력으로 전달됩니다. 🤗 Transformers는 모델이 해당 작업을 지원하는 한 각 작업마다 다른 모델 헤드를 제공합니다(즉, 번역과 같은 시퀀스 간 작업에는 DistilBERT를 사용할 수 없음).  | 
 | 165 | + | 
 | 166 | +<frameworkcontent>  | 
 | 167 | +<pt>  | 
 | 168 | +예를 들어, [`DistilBertForSequenceClassification`]은 시퀀스 분류 헤드가 있는 기본 DistilBERT 모델입니다. 시퀀스 분류 헤드는 풀링된 출력 위에 있는 선형 레이어입니다.  | 
 | 169 | + | 
 | 170 | +```py  | 
 | 171 | +>>> from transformers import DistilBertForSequenceClassification  | 
 | 172 | + | 
 | 173 | +>>> model = DistilBertForSequenceClassification.from_pretrained("distilbert-base-uncased")  | 
 | 174 | +```  | 
 | 175 | + | 
 | 176 | +다른 모델 헤드로 전환하여 이 체크포인트를 다른 작업에 쉽게 재사용할 수 있습니다. 질의응답 작업의 경우, [`DistilBertForQuestionAnswering`] 모델 헤드를 사용할 수 있습니다. 질의응답 헤드는 숨겨진 상태 출력 위에 선형 레이어가 있다는 점을 제외하면 시퀀스 분류 헤드와 유사합니다.  | 
 | 177 | + | 
 | 178 | +```py  | 
 | 179 | +>>> from transformers import DistilBertForQuestionAnswering  | 
 | 180 | + | 
 | 181 | +>>> model = DistilBertForQuestionAnswering.from_pretrained("distilbert-base-uncased")  | 
 | 182 | +```  | 
 | 183 | +</pt>  | 
 | 184 | +<tf>  | 
 | 185 | +예를 들어, [`TFDistilBertForSequenceClassification`]은 시퀀스 분류 헤드가 있는 기본 DistilBERT 모델입니다. 시퀀스 분류 헤드는 풀링된 출력 위에 있는 선형 레이어입니다.  | 
 | 186 | + | 
 | 187 | +```py  | 
 | 188 | +>>> from transformers import TFDistilBertForSequenceClassification  | 
 | 189 | + | 
 | 190 | +>>> tf_model = TFDistilBertForSequenceClassification.from_pretrained("distilbert-base-uncased")  | 
 | 191 | +```  | 
 | 192 | + | 
 | 193 | +다른 모델 헤드로 전환하여 이 체크포인트를 다른 작업에 쉽게 재사용할 수 있습니다. 질의응답 작업의 경우, [`TFDistilBertForQuestionAnswering`] 모델 헤드를 사용할 수 있습니다. 질의응답 헤드는 숨겨진 상태 출력 위에 선형 레이어가 있다는 점을 제외하면 시퀀스 분류 헤드와 유사합니다.  | 
 | 194 | + | 
 | 195 | +```py  | 
 | 196 | +>>> from transformers import TFDistilBertForQuestionAnswering  | 
 | 197 | + | 
 | 198 | +>>> tf_model = TFDistilBertForQuestionAnswering.from_pretrained("distilbert-base-uncased")  | 
 | 199 | +```  | 
 | 200 | +</tf>  | 
 | 201 | +</frameworkcontent>  | 
 | 202 | + | 
 | 203 | +## 토크나이저[[tokenizer]]  | 
 | 204 | + | 
 | 205 | +텍스트 데이터에 모델을 사용하기 전에 마지막으로 필요한 기본 클래스는 원시 텍스트를 텐서로 변환하는 [토크나이저](main_classes/tokenizer)입니다. 🤗 Transformers에 사용할 수 있는 토크나이저는 두 가지 유형이 있습니다:  | 
 | 206 | + | 
 | 207 | +- [`PreTrainedTokenizer`]: 파이썬으로 구현된 토크나이저입니다.  | 
 | 208 | +- [`PreTrainedTokenizerFast`]: Rust 기반 [🤗 Tokenizer](https://huggingface.co/docs/tokenizers/python/latest/) 라이브러리로 만들어진 토크나이저입니다. 이 토크나이저는 Rust로 구현되어 배치 토큰화에서 특히 빠릅니다. 빠른 토크나이저는 토큰을 원래 단어나 문자에 매핑하는 *오프셋 매핑*과 같은 추가 메소드도 제공합니다.  | 
 | 209 | +두 토크나이저 모두 인코딩 및 디코딩, 새 토큰 추가, 특수 토큰 관리와 같은 일반적인 방법을 지원합니다.  | 
 | 210 | + | 
 | 211 | +<Tip warning={true}>  | 
 | 212 | + | 
 | 213 | +모든 모델이 빠른 토크나이저를 지원하는 것은 아닙니다. 이 [표](index#supported-frameworks)에서 모델의 빠른 토크나이저 지원 여부를 확인하세요.  | 
 | 214 | + | 
 | 215 | +</Tip>  | 
 | 216 | + | 
 | 217 | +토크나이저를 직접 학습한 경우, *어휘(vocabulary)* 파일에서 토크나이저를 만들 수 있습니다:  | 
 | 218 | + | 
 | 219 | +```py  | 
 | 220 | +>>> from transformers import DistilBertTokenizer  | 
 | 221 | + | 
 | 222 | +>>> my_tokenizer = DistilBertTokenizer(vocab_file="my_vocab_file.txt", do_lower_case=False, padding_side="left")  | 
 | 223 | +```  | 
 | 224 | + | 
 | 225 | +사용자 지정 토크나이저의 어휘는 사전 학습된 모델의 토크나이저에서 생성된 어휘와 다를 수 있다는 점을 기억하는 것이 중요합니다. 사전 학습된 모델을 사용하는 경우 사전 학습된 모델의 어휘를 사용해야 하며, 그렇지 않으면 입력이 의미를 갖지 못합니다. [`DistilBertTokenizer`] 클래스를 사용하여 사전 학습된 모델의 어휘로 토크나이저를 생성합니다:  | 
 | 226 | + | 
 | 227 | +```py  | 
 | 228 | +>>> from transformers import DistilBertTokenizer  | 
 | 229 | + | 
 | 230 | +>>> slow_tokenizer = DistilBertTokenizer.from_pretrained("distilbert-base-uncased")  | 
 | 231 | +```  | 
 | 232 | + | 
 | 233 | +[`DistilBertTokenizerFast`] 클래스로 빠른 토크나이저를 생성합니다:  | 
 | 234 | + | 
 | 235 | +```py  | 
 | 236 | +>>> from transformers import DistilBertTokenizerFast  | 
 | 237 | + | 
 | 238 | +>>> fast_tokenizer = DistilBertTokenizerFast.from_pretrained("distilbert-base-uncased")  | 
 | 239 | +```  | 
 | 240 | + | 
 | 241 | +<Tip>  | 
 | 242 | + | 
 | 243 | +[`AutoTokenizer`]는 기본적으로 빠른 토크나이저를 가져오려고 합니다. 이 동작을 비활성화하려면 `from_pretrained`에서 `use_fast=False`를 설정하면 됩니다.  | 
 | 244 | + | 
 | 245 | +</Tip>  | 
 | 246 | + | 
 | 247 | +## 이미지 프로세서[[image-processor]]  | 
 | 248 | + | 
 | 249 | +이미지 프로세서(image processor)는 비전 입력을 처리합니다. 기본 [`~image_processing_utils.ImageProcessingMixin`] 클래스에서 상속합니다.  | 
 | 250 | + | 
 | 251 | +사용하려면 사용 중인 모델과 연결된 이미지 프로세서를 생성합니다. 예를 들어, 이미지 분류에 [ViT](model_doc/vit)를 사용하는 경우 기본 [`ViTImageProcessor`]를 생성합니다:  | 
 | 252 | + | 
 | 253 | +```py  | 
 | 254 | +>>> from transformers import ViTImageProcessor  | 
 | 255 | + | 
 | 256 | +>>> vit_extractor = ViTImageProcessor()  | 
 | 257 | +>>> print(vit_extractor)  | 
 | 258 | +ViTImageProcessor {  | 
 | 259 | +  "do_normalize": true,  | 
 | 260 | +  "do_resize": true,  | 
 | 261 | +  "feature_extractor_type": "ViTImageProcessor",  | 
 | 262 | +  "image_mean": [  | 
 | 263 | +    0.5,  | 
 | 264 | +    0.5,  | 
 | 265 | +    0.5  | 
 | 266 | +  ],  | 
 | 267 | +  "image_std": [  | 
 | 268 | +    0.5,  | 
 | 269 | +    0.5,  | 
 | 270 | +    0.5  | 
 | 271 | +  ],  | 
 | 272 | +  "resample": 2,  | 
 | 273 | +  "size": 224  | 
 | 274 | +}  | 
 | 275 | +```  | 
 | 276 | + | 
 | 277 | +<Tip>  | 
 | 278 | + | 
 | 279 | +사용자 지정을 원하지 않는 경우 `from_pretrained` 메소드를 사용하여 모델의 기본 이미지 프로세서 매개변수를 불러오면 됩니다.  | 
 | 280 | + | 
 | 281 | +</Tip>  | 
 | 282 | + | 
 | 283 | +사용자 지정 이미지 프로세서를 생성하려면 [`ViTImageProcessor`] 파라미터를 수정합니다:  | 
 | 284 | + | 
 | 285 | +```py  | 
 | 286 | +>>> from transformers import ViTImageProcessor  | 
 | 287 | + | 
 | 288 | +>>> my_vit_extractor = ViTImageProcessor(resample="PIL.Image.BOX", do_normalize=False, image_mean=[0.3, 0.3, 0.3])  | 
 | 289 | +>>> print(my_vit_extractor)  | 
 | 290 | +ViTImageProcessor {  | 
 | 291 | +  "do_normalize": false,  | 
 | 292 | +  "do_resize": true,  | 
 | 293 | +  "feature_extractor_type": "ViTImageProcessor",  | 
 | 294 | +  "image_mean": [  | 
 | 295 | +    0.3,  | 
 | 296 | +    0.3,  | 
 | 297 | +    0.3  | 
 | 298 | +  ],  | 
 | 299 | +  "image_std": [  | 
 | 300 | +    0.5,  | 
 | 301 | +    0.5,  | 
 | 302 | +    0.5  | 
 | 303 | +  ],  | 
 | 304 | +  "resample": "PIL.Image.BOX",  | 
 | 305 | +  "size": 224  | 
 | 306 | +}  | 
 | 307 | +```  | 
 | 308 | + | 
 | 309 | +## 특성 추출기[[feature-extractor]]  | 
 | 310 | + | 
 | 311 | +특성 추출기(feature extractor)는 오디오 입력을 처리합니다. 기본 [`~feature_extraction_utils.FeatureExtractionMixin`] 클래스에서 상속되며, 오디오 입력을 처리하기 위해 [`SequenceFeatureExtractor`] 클래스에서 상속할 수도 있습니다.  | 
 | 312 | + | 
 | 313 | +사용하려면 사용 중인 모델과 연결된 특성 추출기를 생성합니다. 예를 들어, 오디오 분류에 [Wav2Vec2](model_doc/wav2vec2)를 사용하는 경우 기본 [`Wav2Vec2FeatureExtractor`]를 생성합니다:  | 
 | 314 | + | 
 | 315 | +```py  | 
 | 316 | +>>> from transformers import Wav2Vec2FeatureExtractor  | 
 | 317 | + | 
 | 318 | +>>> w2v2_extractor = Wav2Vec2FeatureExtractor()  | 
 | 319 | +>>> print(w2v2_extractor)  | 
 | 320 | +Wav2Vec2FeatureExtractor {  | 
 | 321 | +  "do_normalize": true,  | 
 | 322 | +  "feature_extractor_type": "Wav2Vec2FeatureExtractor",  | 
 | 323 | +  "feature_size": 1,  | 
 | 324 | +  "padding_side": "right",  | 
 | 325 | +  "padding_value": 0.0,  | 
 | 326 | +  "return_attention_mask": false,  | 
 | 327 | +  "sampling_rate": 16000  | 
 | 328 | +}  | 
 | 329 | +```  | 
 | 330 | + | 
 | 331 | +<Tip>  | 
 | 332 | + | 
 | 333 | +사용자 지정이 필요하지 않은 경우 `from_pretrained` 메소드를 사용하여 모델의 기본 특성 추출기 ㅁ개변수를 불러 오면 됩니다.  | 
 | 334 | + | 
 | 335 | +</Tip>  | 
 | 336 | + | 
 | 337 | +사용자 지정 특성 추출기를 만들려면 [`Wav2Vec2FeatureExtractor`] 매개변수를 수정합니다:  | 
 | 338 | + | 
 | 339 | +```py  | 
 | 340 | +>>> from transformers import Wav2Vec2FeatureExtractor  | 
 | 341 | + | 
 | 342 | +>>> w2v2_extractor = Wav2Vec2FeatureExtractor(sampling_rate=8000, do_normalize=False)  | 
 | 343 | +>>> print(w2v2_extractor)  | 
 | 344 | +Wav2Vec2FeatureExtractor {  | 
 | 345 | +  "do_normalize": false,  | 
 | 346 | +  "feature_extractor_type": "Wav2Vec2FeatureExtractor",  | 
 | 347 | +  "feature_size": 1,  | 
 | 348 | +  "padding_side": "right",  | 
 | 349 | +  "padding_value": 0.0,  | 
 | 350 | +  "return_attention_mask": false,  | 
 | 351 | +  "sampling_rate": 8000  | 
 | 352 | +}  | 
 | 353 | +```  | 
 | 354 | + | 
 | 355 | + | 
 | 356 | +## 프로세서[[processor]]  | 
 | 357 | + | 
 | 358 | +멀티모달 작업을 지원하는 모델의 경우, 🤗 Transformers는 특성 추출기 및 토크나이저와 같은 처리 클래스를 단일 객체로 편리하게 래핑하는 프로세서 클래스를 제공합니다. 예를 들어, 자동 음성 인식 작업(Automatic Speech Recognition task (ASR))에 [`Wav2Vec2Processor`]를 사용한다고 가정해 보겠습니다. 자동 음성 인식 작업은 오디오를 텍스트로 변환하므로 특성 추출기와 토크나이저가 필요합니다.  | 
 | 359 | + | 
 | 360 | +오디오 입력을 처리할 특성 추출기를 만듭니다:  | 
 | 361 | + | 
 | 362 | +```py  | 
 | 363 | +>>> from transformers import Wav2Vec2FeatureExtractor  | 
 | 364 | + | 
 | 365 | +>>> feature_extractor = Wav2Vec2FeatureExtractor(padding_value=1.0, do_normalize=True)  | 
 | 366 | +```  | 
 | 367 | + | 
 | 368 | +텍스트 입력을 처리할 토크나이저를 만듭니다:  | 
 | 369 | + | 
 | 370 | +```py  | 
 | 371 | +>>> from transformers import Wav2Vec2CTCTokenizer  | 
 | 372 | + | 
 | 373 | +>>> tokenizer = Wav2Vec2CTCTokenizer(vocab_file="my_vocab_file.txt")  | 
 | 374 | +```  | 
 | 375 | + | 
 | 376 | +[`Wav2Vec2Processor`]에서 특성 추출기와 토크나이저를 결합합니다:  | 
 | 377 | + | 
 | 378 | +```py  | 
 | 379 | +>>> from transformers import Wav2Vec2Processor  | 
 | 380 | + | 
 | 381 | +>>> processor = Wav2Vec2Processor(feature_extractor=feature_extractor, tokenizer=tokenizer)  | 
 | 382 | +```  | 
 | 383 | + | 
 | 384 | +configuration과 모델이라는 두 가지 기본 클래스와 추가 전처리 클래스(토크나이저, 이미지 프로세서, 특성 추출기 또는 프로세서)를 사용하면 🤗 Transformers에서 지원하는 모든 모델을 만들 수 있습니다. 이러한 각 기본 클래스는 구성이 가능하므로 원하는 특정 속성을 사용할 수 있습니다. 학습을 위해 모델을 쉽게 설정하거나 기존의 사전 학습된 모델을 수정하여 미세 조정할 수 있습니다.  | 
0 commit comments