개요
kmnist 데이터는 숫자로 이루어진 mnist 데이터 세트가 아닌 일본어 관련 데이터이다. 데이터의 공식 문서는 Deep Learning for Classical Japanese Literature 논문을 살펴보면 된다. 해당 논문에는 각 일어의 분류 및 그 예시를 보여준다. (거 악필이 너무 심한거 아니오!!)
설치
torchvision 패키지는 아직 cran에 정식 등록되지 않아 install.packages()
함수로 설치를 시도하면 다음과 같이 경고가 뜨면서 설치가 되지 않는다.
1 | install.packages("torchvision") |
다음과 같이 github를 통해 제공하는 패키지를 설치해야 하는데 다음은 remotes 패키지를 활용한 것이고 devtools 패키지도 사용할 수 있다.
1 | remotes::install_github("mlverse/torchvision") # 1 |
메세지 아래 부분을 보면 kmnist 관련 문서가 언급되는 것을 볼 수 있다.
그리고 설치하다가 “Torch failed to start, restart your R session to try again.” 이라는 문구가 뜨면서 불완전 설치가 되는 것 처럼 보이는데 R을 재시작 하고 설치해도 똑같으니 당장은 무시할 수 밖에 없다.
로딩
torchvision 을 불러와서 kmnist 데이터 세트를 다운받도록 하자.
1 | library("torchvision") |
kmnist_dataset()
함수는 kmnist 데이터 세트를 불러오는데 필요한 함수로 download 에 TRUE
를 설정하면 새로 다운받지만 기존에 한 번 다운 받았으면 다시 받지 않는다. train 에 TRUE
를 입력한 경우 학습용 데이터 세트 60000개를 불러온다. 아무튼 ds_mnist 객체에 저장된 데이터를 살펴보도록 하자.
확인
데이터 세트 개요
우선 객체 구조를 보기위해 str()
함수를 써보자.
1 | str(ds_mnist) |
여기서 주목해야 할 항목은 classes(line 9), data(line 11), targets(line 20) 이렇게 세 항목이다.
데이터 세트의 클래스와 개수 확인은 다음과 같이 할 수 있다.
1 | class(ds_mnist) |
그리고 데이터 targets 에 대응하는 문자가 어떻게 되는지 확인하기 위해서는 다음과 같은 작업이 필수이다.
1 | ds_mnist$classes |
위에서 만든 데이터프레임과 타겟을 합쳐서 보려면 다음과 같이 한다.
1 | df_targets = data.frame(obs = 1:length(ds_mnist), |
두 데이터 세트를 병합해보자.
1 | library("dplyr") |
개별 데이터 탐색
이제 개별 데이터를 살펴보도록 하자. 첫 번째 데이터의 구조는 다음과 같다.
1 | str(ds_mnist[1]) |
아무튼 첫 번째 list는 28x28 크기의 데이터고 두 번째 list는 크기가 1인 것 같다. 뜯어보면 다음과 같다.
1 | ds_mnist[1][[1]] |
첫 번째 list에 있는 28x28 데이터는 너무 많아서 일부만 가져왔다. 두 번째 list를 보니 첫 번째 list에 있는 값의 target을 의미하는 것을 알 수 있다. 아무래도 글자가 어떻게 생겼는지 확인을 해야하지 않을까? 60000개 데이터 중 첫 번째 데이터를 ggplot 패키지로 살펴보기 위해 전처리 절차를 밟도록 하자.
1 | data_sub = ds_mnist[1] # 첫 번째 데이터 떼어내기 |
as_array()
함수는 torch tensor를 R에서 사용할 수 있는 array 객체(matrix와 유사)로 바꿔준다. 기본 객체로 바꿔준 후 reshape2 패키지의 melt()
함수로 그래프를 그리기 적당한 long form 형태로 바꿔주고 적당히 데이터를 처리한 결과를 df_arr_col_melt 객체의 출력값에서 확인할 수 있다. 그리고 코드의 9번 줄(★)의 코드를 보면 “1:nrow(arr_col)”이 아니라 “nrow(arr_col):1” 으로 되어있는데 이는 그래프 표현의 문제라 반대로 하였다.
ggplot2 패키지로 시각화 하는 코드는 다음과 같다.
1 | library("ggplot2") |
test 데이터
참고로 테스트 세트는 다음과 같이 불러올 수 있다.
1 | ds_mnist_test = kmnist_dataset(root = ".", |