줄리아에서 머신러닝 데이터 셋 사용하는 방법

줄리아에서 머신러닝 데이터 셋 사용하는 방법

설명

MLDatasets.jl1 2 패키지로 아래와 같은 데이터 셋을 사용할 수 있다.

Vision

Miscellaneous

Text

Graphs

예시

MNIST

데이터와 레이블을 한 번에 불러오려면 .traindata()를 사용한다.

julia> Train_X, Train_Y = MLDatasets.MNIST.traindata()

julia> typeof(Train_X)
Base.ReinterpretArray{FixedPointNumbers.N0f8, 3, UInt8, Array{UInt8, 3}, false}

julia> size(Train_X)
(28, 28, 60000)

julia> typeof(Train_Y)
Vector{Int64} (alias for Array{Int64, 1})

julia> Train_Y
60000-element Vector{Int64}:
 5
 0
 4
 1
 9
 2
 1
 3
 1
 4
 3
 5
 3
 
 7
 8
 9
 2
 9
 5
 1
 8
 3
 5
 6
 8

데이터와 레이블을 각각 불러오는 방법은 다음과 같다.

julia> Train_X = MLDatasets.MNIST.traintensor()
28×28×60000 reinterpret(FixedPointNumbers.N0f8, ::Array{UInt8, 3}):

julia> Train_Y = MLDatasets.MNIST.trainlabels()
60000-element Vector{Int64}:

테스트 셋은 다음과 같이 불러온다.

julia> Test_X = MLDatasets.MNIST.testtensor()
28×28×10000 reinterpret(FixedPointNumbers.N0f8, ::Array{UInt8, 3})


julia> Test_Y = MLDatasets.MNIST.testlabels()
10000-element Vector{Int64}:

julia> Test_X, Test_Y = MLDatasets.MNIST.testdata()

특이한 점은 Train_Y원-핫 인코딩 벡터가 아니라 정수로 구성되어 있다는 점이다. 116번째는 4에 대한 데이터임을 다음과 같이 확인할 수 있다. 손글씨 사진은 90도만큼 회전된 사진임에 주의하자.

julia> fig = heatmap(imrotate(Train_X[:,:,116],-pi/2))

julia> savefig(fig, "MNIST116.png")

julia> Train_Y[116]
4

MNIST116.png

CIFAR10

julia> Train_X2, Train_Y2 = CIFAR10.traindata()

julia> size(Train_X2)
(32, 32, 3, 50000)

julia>typeof(Train_X2)
Base.ReinterpretArray{N0f8, 4, UInt8, Array{UInt8, 4}, false}

julia> size(Train_Y2)
(50000,)

julia>typeof(Train_Y2)
Vector{Int64} (alias for Array{Int64, 1})

julia> for i in 1:7
        save("CIFAR10_$i.png", colorview(RGB, CIFAR10.convert2image(CIFAR10.traintensor(i))))
        end

처음 7개 사진을 뽑아보면 다음과 같다.

환경


  1. https://github.com/JuliaML/MLDatasets.jl ↩︎

  2. https://juliaml.github.io/MLDatasets.jl/dev/ ↩︎

댓글