著者:石井 一夫
最終回は、次世代データサイエンス言語として注目されている「Julia」を紹介します。高速な実行速度、並列分散処理の容易さ、数式記述の自然さなどを特徴とするJuliaは、今後急速に普及すると考えられます。
シェルスクリプトマガジン Vol.62は以下のリンク先でご購入できます。![]()
![]()
図4 必要パッケージを読み込むコード
using Pkg
Pkg.add("Flux")
using Flux
using Statistics
using Flux: onehotbatch, onecold, crossentropy, throttle
using Base.Iterators: repeated
図5 MNIST データを読み込むコード
imgs = Flux.Data.MNIST.images()
labels = Flux.Data.MNIST.labels()
図7 訓練用データの前処理用コード
X = hcat(float.(reshape.(imgs, :))...)
Y = onehotbatch(labels, 0:9)
図8 モデルの構築用コード
m = Chain(
Dense(28^2, 32, relu),
Dense(32, 10),
softmax)
図9 損失関数などの設定用コード
loss(x, y) = crossentropy(m(x), y)
opt = ADAM()
accuracy(x, y) = mean(onecold(m(x)) .== onecold(y))
dataset = repeated((X,Y),200)
evalcb = () -> @show(loss(X, Y))
図10 訓練データを用いた学習をするコード
Flux.train!(loss, params(m), dataset, opt, cb = throttle(evalcb, 10))
図13 テストデータの前処理用コード
test_X = hcat(float.(reshape.(Flux.Data.MNIST.images(:test), :))...)
test_Y = onehotbatch(Flux.Data.MNIST.labels(:test), 0:9)
図14 テスト画像の数字を推測するコード
onecold(m(test_X[:,5287])) - 1