Hugging Face에서 제공하는 transformers를 이용하면, 모델의 구조를 전부 설계할 필요 없이 편리하게 사전 학습된 모델을 사용할 수 있다. * 아래에 작성한 코드는 Jupyter(Colab) 환경에서 실행한다는 전제로 작성하였다. 참고자료: https://huggingface.co/docs/transformers/index 🤗 Transformers Reinforcement learning models huggingface.co 설치 !pip install transformers Pipeline pipeline은 해결하고자 하는 문제(task)에 맞는 사전학습 모델을 제공한다. task의 분류는 pipeline에서 확인할 수 있다. 예를 들어, NER(개체명 인식 문제)을 통해 이름과 고..
Go는 testing을 통해 테스트 코드 작성을 지원한다. 테스트를 수행할 테스트 파일은 _test.go 형식의 파일 이름을 가져야 한다. (예: cv_test.go) import "testing" Test func Test함수이름(t *testing.T) { res := 함수(...) if res != 결과 { t.Errorf("...") } } 테스트를 수행할 함수는 Test로 시작하고, *testing.T를 파라미터로 받는다. 예: func RepeatAdd(n int) int { i := 0 for j := 1; j
Asynchronous Non-blocking 작업 - Synchronous vs Asynchronous - Blocking vs Non-Blocking - Asynchronous Non-blocking Request Sync / Async 두 항목을 나누는 기준은 요청한 작업이 진행되는 순서이다. Synchronous - 동기: 요청된 작업이.. denev6.tistory.com 위 글에서 설명했듯이 비동기 처리는 속도와 효율성 면에서 큰 이점을 가진다. 그리고 Go는 이러한 비동기 루틴 실행을 아주아주아주 쉽게 할 수 있다. Go 루틴 Go의 루틴은 2KB 스택 공간만을 사용하기 때문에 가볍고, 하나의 코어 당 하나의 OS 스레드만 할당하기 때문에 스레드의 컨텍스트 스위칭 비용이 발생하지 않는다. g..
map Go에서 기본으로 제공하는 map은 Hash Map 구조를 가진다. // map[키]값 dict := map[int]string{ 1: "one", 2: "two", } dict[3] = "three" {중괄호} 안에서 초기화하거나 키를 이용해 값을 삽입할 수 있다. dict := map[int]string{ 1: "one", 2: "two", } val, exist := dict[5] if !exist { fmt.Println("dict[5] doesn't exist") } else { fmt.Println(val) } // dict[5] doesn't exist 키로 값을 가져올 때, 값과 존재 여부를 반환한다. for key, value := range dict { fmt.Printf("%d..
defer defer는 함수가 종료될 때 실행한다. func Test() { fmt.Println("--Begin--") defer fmt.Println("111") defer fmt.Println("222") defer fmt.Println("333") fmt.Println("--End--") /* --Begin-- * --End-- * 333 * 222 * 111 */ } defer 문이 '--End--'보다 먼저 선언되었지만 함수 마지막에 실행된다. defer 문이 여러 개일 때는 stack처럼 동작된다. panic panic은 오류가 발생했을 때 프로그램을 중지시키고 defer 문이 실행된다. func WriteTxt(file, sentence string) { f, err := os.Create..