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