Merge pull request #418 from c-p-murphy/add-fashion-mnist
Add FashionMNIST
This commit is contained in:
commit
325d2ce212
@ -13,6 +13,9 @@ end
|
|||||||
include("mnist.jl")
|
include("mnist.jl")
|
||||||
export MNIST
|
export MNIST
|
||||||
|
|
||||||
|
include("fashion-mnist.jl")
|
||||||
|
export FashionMNIST
|
||||||
|
|
||||||
include("cmudict.jl")
|
include("cmudict.jl")
|
||||||
using .CMUDict
|
using .CMUDict
|
||||||
|
|
||||||
|
64
src/data/fashion-mnist.jl
Normal file
64
src/data/fashion-mnist.jl
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
module FashionMNIST
|
||||||
|
|
||||||
|
using ..MNIST: gzopen, imageheader, rawimage, labelheader, rawlabel
|
||||||
|
|
||||||
|
const dir = joinpath(@__DIR__, "../../deps/fashion-mnist")
|
||||||
|
|
||||||
|
function load()
|
||||||
|
mkpath(dir)
|
||||||
|
cd(dir) do
|
||||||
|
for file in ["train-images-idx3-ubyte",
|
||||||
|
"train-labels-idx1-ubyte",
|
||||||
|
"t10k-images-idx3-ubyte",
|
||||||
|
"t10k-labels-idx1-ubyte"]
|
||||||
|
isfile(file) && continue
|
||||||
|
@info "Downloading Fashion-MNIST dataset"
|
||||||
|
download("http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/$file.gz", "$file.gz")
|
||||||
|
open(file, "w") do io
|
||||||
|
write(io, gzopen(read, "$file.gz"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
const TRAINIMAGES = joinpath(dir, "train-images-idx3-ubyte")
|
||||||
|
const TRAINLABELS = joinpath(dir, "train-labels-idx1-ubyte")
|
||||||
|
const TESTIMAGES = joinpath(dir, "t10k-images-idx3-ubyte")
|
||||||
|
const TESTLABELS = joinpath(dir, "t10k-labels-idx1-ubyte")
|
||||||
|
|
||||||
|
"""
|
||||||
|
images()
|
||||||
|
images(:test)
|
||||||
|
|
||||||
|
Load the Fashion-MNIST images.
|
||||||
|
|
||||||
|
Each image is a 28×28 array of `Gray` colour values (see Colors.jl).
|
||||||
|
|
||||||
|
Returns the 60,000 training images by default; pass `:test` to retreive the
|
||||||
|
10,000 test images.
|
||||||
|
"""
|
||||||
|
function images(set = :train)
|
||||||
|
load()
|
||||||
|
io = IOBuffer(read(set == :train ? TRAINIMAGES : TESTIMAGES))
|
||||||
|
_, N, nrows, ncols = imageheader(io)
|
||||||
|
[rawimage(io) for _ in 1:N]
|
||||||
|
end
|
||||||
|
|
||||||
|
"""
|
||||||
|
labels()
|
||||||
|
labels(:test)
|
||||||
|
|
||||||
|
Load the labels corresponding to each of the images returned from `images()`.
|
||||||
|
Each label is a number from 0-9.
|
||||||
|
|
||||||
|
Returns the 60,000 training labels by default; pass `:test` to retreive the
|
||||||
|
10,000 test labels.
|
||||||
|
"""
|
||||||
|
function labels(set = :train)
|
||||||
|
load()
|
||||||
|
io = IOBuffer(read(set == :train ? TRAINLABELS : TESTLABELS))
|
||||||
|
_, N = labelheader(io)
|
||||||
|
[rawlabel(io) for _ = 1:N]
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
@ -10,4 +10,7 @@ using Test
|
|||||||
@test MNIST.images()[1] isa Matrix
|
@test MNIST.images()[1] isa Matrix
|
||||||
@test MNIST.labels() isa Vector{Int64}
|
@test MNIST.labels() isa Vector{Int64}
|
||||||
|
|
||||||
|
@test FashionMNIST.images()[1] isa Matrix
|
||||||
|
@test FashionMNIST.labels() isa Vector{Int64}
|
||||||
|
|
||||||
@test Data.Sentiment.train() isa Vector{Data.Tree{Any}}
|
@test Data.Sentiment.train() isa Vector{Data.Tree{Any}}
|
||||||
|
Loading…
Reference in New Issue
Block a user