목록전체 글 (302)
elevne's Study Note

본격적으로 Model을 Train 돌리기 전, Model에 Sequence를 입력하였을 때 어떠한 Output이 나오게되는지 확인해보았다. 아래와 같은 코드를 작성한다. text = "This is a text for test" inputs = tokenizer(text, return_tensors="pt") print(inputs["input_ids"]) print("Input Tensor Size:", inputs["input_ids"].size()) 이전에 확인해보았듯이, 우선 Sequence는 tokenizer에 들어가게 될 것이고 이는 하나의 tensor data로 바뀌게된다. inputs를 print 하여 확인해보면 아래와 같은 모습을 띈다. 아래와 같은 코드를 작성하여 불러온 model에 S..

Transformers, Huggingface는 NLP와 ML 프로젝트의 속도를 높이는 다양한 라이브러리와 도구를 갖춘 생태계로 빠르게 성장했다. Huggingface는 크게 Library, Hub 둘로 구성된다고 한다. Library는 코드를 제공하고, Hub는 사전훈련 모델 가중치, 데이터셋, 평가지표를 위한 Script 등을 제공한다고 한다. 전이학습은 Transformer의 성공을 견인한 주요 요소라고 한다. 사전훈련되 모델을 새로운 작업에 빠르게, 재사용하는 것이 가능해졌기 때문이다. Huggingface Hub에서는 20,000 개 이상의 무료 모델을 사용할 수 있고 Pipeline Class를 사용하여 단 한줄로 Test를 해볼 수 있다. 또, NLP task에서는 텍스트를 Token으로 분..

JS에서 배열을 생성할 때 길이를 지정해줄 수도 있지만, 빈 Array로 만들고 .length로 길이를 지정해줄 수도 있다. const emptyArray = [] emptyArray.length = 1000000 console.log(emptyArray) 또, 이전에 많이 사용하였던 Destructuring 문법을 사용하여 Array를 병합하는 것도 가능하다. let array1 = [1, 2, 3] let array2 = [4, 5, 6] let tmpArray = [...array1, ...array2] console.log(tmpArray) JS에서 자주 사용되는 객체를 Array로 만들 때는, Array.from 메서드를 사용해주면 된다. 이 때, 객체 내부에 length 값이 아래와 같이 지정..

JS에서 문자열을 다루는 다양한 방법에 대해 알아보았다. 문자열 또한 Array와 같이 Destructuring 문법을 사용하여 Character 단위로 쪼개서 Array에 넣을 수 있다. let text = "HELLLO!" let characters = [...text] console.log(characters) 문자열에서 특정 문자열, 또는 Character의 index를 아래와 같은 방식으로 알아볼 수 있다. indexOf는 첫 번째, lastIndexOf는 마지막 Matching index를 반환한다. let index = text.indexOf("EL") console.log(index) index = text.lastIndexOf("L") console.log(index) 그 외에도 star..

Google은 2017년 논문에서 Sequence Modeling을 위한 새로운 Neural Network 아키텍쳐, Transformer를 제안하였고 이는 기존의 RNN을 능가하였다. 이 모델은 오늘날의 GPT, BERT의 기반이 되었다. 두 모델은 Transformer 구조와 비지도학습을 결합하여 작업에 특화된 모델을 밑바닥부터 훈련할 필요를 거의 없애고 거의 모든 NLP Benchmark에서 큰 차이로 기록을 갱신하였다고 한다. Transformer 이전에는 RNN 기반 Encoder-Decoder 형태의 Seq2Seq가 많이 사용되었다. RNN은 단어 또는 문자와 같은 입력을 받아 Network를 통과시킨 후 은닉상태라는 벡터를 출력한다. 동시에 출력된 정보를 피드백 루프로 보내 자기자신에 다시 ..

이번에는 Javascript에서 숫자와 날짜 형식의 데이터를 다루는 법에 대해 알아보았다. 소수점 아래 자리수의 숫자를 가진 Number 데이터들에는 아래와 같은 메서드를 사용할 수 있다. const x = 1 / 600 console.log(x) console.log(x.toFixed(4)) console.log(x.toExponential(4)) console.log(x.toPrecision(4)) toFixed: 고정된 형식의 부동소수점 숫자를 소수점 아래 몇 자리까지 남겨둘지 지정 toExponential: 한 자리 정수와 소수점 아래 n-1 개의 숫자를 지수형식으로 표시 toPrecision: 유효숫자 표시 이 외에도 아래와 같은 메서드를 Number 데이터에 대해 사용할 수 있다. // isN..

아래 코드와 같이 JS 객체를 생성해줄 수 있다. worker = { name : "Steph Curry", salary : 10000000, raiseSalary(percent){ this.salary *= (1+percent)/100 } } 위에서 raiseSalary는 worker 객체에 선언된 함수로, 본문에서 this.salary를 참조한다는 점을 제외하면 일반 함수와 같다. this 참조는 function이나 function을 생략한 단축 문법에서만 동작하고 화살표 함수에서는 동작하지 않는다고 한다. 또 위와 같은 객체를 여러개 만들 때, 각각의 worker 객체에 raiseSalary 프로퍼티를 만들어줘야 한다. 이 때 각 worker 객체가 한 함수를 공유할 수 있도록 Prototype(프..

자바스크립트에서 함수는 값을 취급하며 이를 변수에 저장하거나, 인수로 전달하거나, 다른 함수의 결과로 반환할 수 있다. 아래 코드처럼 사용할 수 있는 것이다. let numbers = [1, 2, 3, 4, 5] f = Math.sqrt let result = numbers.map(f) console.log(result) 위의 map 함수처럼 다른 함수를 소비하는 메서드를 고차함수라고 한다. 화살표 함수를 사용할 때, 매개변수가 한 개라면 아래 코드와 같이 괄호를 생략할 수 있다고 한다. let numbers = [1, 2, 3, 4, 5] let result = numbers.map(x => Math.sqrt(x)) console.log(result) 이전 시간에 봤던 for of, for in 루프 ..