반응형

분류 전체보기 502

NLP Question Answering 전처리, 학습 및 성능 평가 코드 예제

HuggingFace에서 제공하는 transformers 모듈을 활용하여 pre-train model을 불러와 자연어 처리의 대표 task 중 하나인 Question Answering에 대하여 학습하고 검증하는 과정들의 파이썬 실습 코드 예제를 다루어보도록 하겠습니다. Step 1. 데이터셋 로드 및 전처리 과정 먼저, 학습을 위하여 데이터셋을 불러오고 모델 학습을 위한 전처리 과정을 수행해주어야 합니다. 여기서는 QA task의 대표 벤치마크 데이터셋인 SQuAD를 사용해보도록 하겠습니다. 전처리 과정에 대해서는 아래 링크의 허깅페이스 공식 페이지를 참고하였으니, 상세한 내용이 필요하신 분들은 해당 글을 참고해주세요. Question answering - Hugging Face Course Time t..

Python/NLP Code 2022.10.19

[Pytorch] 파이썬 Domain Adaptation 구현 예제(feat. DANN Loss)

이번 글에서는 파이토치로 DANN Loss를 활용한 Domain Adaptation을 간단하게 구현해보는 실습 코드 예제를 다루어보도록 하겠습니다. DANN Loss는 class label 분류 학습과 함께 domain 분류를 진행하되, domain 분류 layer의 gradient에 음수 배를 취하여 domain 간의 거리를 줄이도록 유도하는 학습을 통한 domain adaptation 방식으로 유명하게 사용되는 손실 함수 방식입니다. 여기에서는 예시로 두 숫자 글씨 데이터인 MNIST와 SVHN에 대하여 domain adaptation을 진행해보도록 하겠습니다.(아래 Figure와는 Source와 Target이 반대인 점을 유의해주세요.) Step 1. 데이터셋 로드 및 전처리 먼저, MNIST와 S..

Python/Pytorch 2022.10.14

파이썬에서 상수(const) 기능을 사용하는 방법

C++, JAVA 등 다른 언어에서 const로 사용되는 기능인 상수 선언을 Python에서도 사용이 가능할까요? 아쉽게도 파이썬에서는 직접적으로 상수를 선언하는 기능을 제공하고 있지 않습니다. 대신, 값이 변하지 않는 const 기능을 간접적으로 사용할 수 있는 몇 가지 테크닉을 정리해보도록 하겠습니다. 1. 함수로 선언 상수로 사용할 값을 변수가 아니라 함수로 선언하여 값 변경을 우회하는 방법입니다. 예를 들어, pi라는 값을 3.14로 선언하기 위해서 아래와 같이 함수로 구현할 수 있습니다. def pi(): return 3.14 선언한 값에 대하여 실제 사용 및 값 변경 시도 예시는 아래와 같습니다. print(pi() + 2) # 5.14 pi() = 5 # SyntaxError: can't a..

Python/Utils 2022.10.11

파이썬 소인수분해 함수 : sympy 모듈의 factorint

Python 소인수분해 라이브러리 함수 파이썬에서 정수에 대한 소인수분해를 손쉽게 바로 진행해줄 수 있는 함수인 sympy 라이브러리의 factorint에 대하여 다루어보도록 하겠습니다. 사용법은 매우 간단합니다. factorint(정수) 형태로 사용해주시면 소인수분해 결과가 key가 소인수 밑, value가 지수인 딕셔너리 형태로 반환됩니다. from sympy.ntheory import factorint factorint(12) # {2: 2, 3: 1} factorint(30) # {2: 1, 3: 1, 5: 1} factorint(17) # {17: 1} 참고로, 음의 정수에 대해서도 사용이 가능합니다.(-1을 추가 소인수로 가정합니다.) 또한, 0에 대해서도 사용이 가능한데, 이 때는 0^1을 ..

Python/Utils 2022.10.10

[Numpy] 파이썬 리스트(배열)에서 0이 아닌 값 위치/개수 찾기 : np.nonzero

Python numpy nonzero 파이썬의 리스트 혹은 배열에서 0이 아닌 원소들의 인덱스 번호나 개수를 찾을 수 있는 방법을 nonzero 함수의 사용법을 기준으로 다루어 보겠습니다. 1차원 리스트/배열의 경우 먼저, 1차원 리스트 혹은 배열 a에 대해서는 np.nonzero(a) 형태로 함수를 써주시면 0이 아닌 원소들의 위치들을 모아서 반환해줍니다. 개수는 해당 위치 배열의 길이를 통하여 바로 구할 수 있습니다. import numpy as np a = [0, 0, 1, 0, 0, 2, 0, 1] # 0이 아닌 인덱스 위치 np.nonzero(a) # (array([2, 5, 7]),) # 0이 아닌 원소의 개수 len(np.nonzero(a)[0]) # 3 2차원 이상 배열의 경우 2차원 이상..

Python/Numpy 2022.10.10

[Matplotlib] 파이썬 그래프 축 로그 스케일 지정 - xscale, yscale

Python plt log scale axis 파이썬에서 x축 및 y축의 눈금을 로그(log) 스케일로 지정할 수 있는 xscale 및 yscale 함수에 대하여 사용 예제를 살펴보도록 하겠습니다. 우선, 다음과 같이 간단한 바 그래프가 있다고 가정해 보겠습니다. import matplotlib.pyplot as plt plt.bar(['A', 'B', 'C', 'D', 'E'], [100, 500, 1000, 5000, 10000], color = 'b', alpha = 0.5) plt.show() 이제 위 그래프의 y축을 로그 스케일로 바꾸어보도록 하겠습니다. log 옵션 vs symlog 옵션 x축은 plt.xscale, y축은 plt.yscale 함수로 축의 스케일을 변경할 수 있습니다. 여기서 ..

Python/Matplotlib 2022.10.07

[Matplotlib] 파이썬 그래프 y축 절단(물결선 효과) 적용 방법

Python plt broken axis 파이썬에서 matplotlib 모듈을 활용하여 그래프를 그릴 때, 축을 중간에서 절단하여 물결선과 비슷한 효과를 낼 수 있는 방법을 살펴보도록 하겠습니다. 참고로, 해당 글은 아래의 matplotlib 공식 사이트 글의 코드를 참고하여 작성되었습니다. Broken Axis — Matplotlib 3.6.0 documentation Note Click here to download the full example code Broken Axis Broken axis example, where the y-axis will have a portion cut out. import numpy as np import matplotlib.pyplot as plt np.random..

Python/Matplotlib 2022.10.06

[R] 데이터프레임 값 변경/수정 방법 정리

R 프로그래밍 과정에서 데이터프레임의 특정 값들을 원하는대로 바꾸는 방법을 정리해보도록 하겠습니다. 예시로 df라는 변수에 아래의 데이터프레임이 저장되어 있다고 가정해보겠습니다. > df A B C 1 10 가 aaa 2 20 나 aaa 3 30 다 bbb 4 40 라 bbb 특정 위치 값 1개 변경 가장 간단한 예시로, 행과 열의 위치를 지정하여 값을 수정하는 방법입니다. R에서는 df[행 인덱스, 열 이름] = 값 형태로 할당해주시면 변경이 완료됩니다. > df[1, "A"] = 999 > df A B C 1 999 가 aaa 2 20 나 aaa 3 30 다 bbb 4 40 라 bbb 특정 행 전체 수정 특정 행의 값 전체를 변경하고 싶다면 df[행 인덱스, ] = 행 값 벡터 형태로 행 전체의 값들..

R 2022.10.05

파이썬 과학적 표기법(지수 표현) 출력 양식 지정 방법

Python Scientific Notation 파이썬에서 특정 수를 지수 표현으로 나타내어 1.23e+8, 4.753e-6과 같이 과학적 표기법으로 출력하는 방법을 정리해도록 하겠습니다. 일반적인 소수점 자릿수 출력 양식은 "%.2f"처럼 지정하는 반면, 과학적 표기법의 경우에는 "%.2e"처럼 f 대신 e로 지정해주시면 해당 자릿수까지 반올림되어 반영된 지수 표현으로 출력이됩니다. a = 1234567.89012 ### 기존 포맷팅 예시 ### print(a) # 1234567.89012 print("%.2f"%a) # 1234567.89 print("%.5f"%a) # 1234567.89012 ### 과학적 표기법 예시 ### print("%.2e"%a) # 1.23e+06 print("%.5e"%..

[C언어] 문자열 내 특정 문자(열) 등장 횟수 탐색 방법

C언어 특정 문자(열) 개수 세기(1글자, 여러 글자 모두 가능) 문자열 s 내에서 부분 문자열 find의 등장 횟수를 찾는 예시 코드는 아래와 같습니다. #include #include int main(){ char s[30] = "hello world! hello hello hi"; // 전체 문자열 char *find = "hello"; // 찾고 싶은 문자열 지정 char *ptr = strstr(s, find); // 첫 등장 위치 탐색 int cnt = 0; // 등장 횟수를 셀 변수 while (ptr != NULL) // 더이상 find 문자열이 등장하지 않을 때까지 반복 { ptr = strstr(ptr + 1, find); // 다음 등장 위치 탐색 cnt++; } printf("%s는..

C & C++ 2022.09.29
반응형