줄리아에서 머신러닝 데이터 셋 사용하는 방법
How to Use Machine Learning Data Sets in Julia
설명
MLDatasets.jl
1 2 패키지로 아래와 같은 데이터 셋을 사용할 수 있다.
Vision
- CIFAR10
- CIFAR100
- EMNIST
- FashionMNIST
- MNIST
- SVHN2
Miscellaneous
- BostonHousing
- Iris
- Mutagenesis
Text
- PTBLM
- UD_English
Graphs
- CiteSeer
- Cora
- PubMed
- TUDatasets
이 데이터를 원-핫 인코딩하거나, 학습시키는 방법은 다음을 참고하라.
예시
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
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개 사진을 뽑아보면 다음과 같다.
환경
- OS: Windows10
- Version: Julia 1.6.2, MLDatasets 0.5.14
댓글