Julia の GaussianProcesses のライブラリを入れようとする (2)
前回はこちら
nakano-tomofumi.hatenablog.com
Optim の仕様変更への対応
問題のエラーは、次のようなもの
julia> optimize!(gp) ERROR: MethodError: no method matching set_params!(::GaussianProcesses.GP, ::Float64; noise=true, mean=true, kern=true) Closest candidates are: set_params!(::GaussianProcesses.GP, ::Array{Float64,1}; noise, mean, kern) at /Users/xxxxx/.julia/v0.5/GaussianProcesses/src/GP.jl:275 set_params!{K<:GaussianProcesses.Kernel}(::GaussianProcesses.Masked{K<:GaussianProcesses.Kernel}, ::Any) at /Users/xxxxxx/.julia/v0.5/GaussianProcesses/src/kernels/masked_kernel.jl:55 got unsupported keyword arguments "noise", "mean", "kern"
これに対して、既に修正が行われている模様:
そして実行。
julia> Pkg.checkout("GaussianProcesses") INFO: Checking out GaussianProcesses master... INFO: Pulling GaussianProcesses latest master... INFO: No packages to install, update or remove
おや?変化なし。
パッケージが最新版を見ていない模様。
julia> Pkg.status() 4 required packages: - GaussianProcesses 0.4.0+ master
statusを見ると、master を見ていることになっている。再コンパイルが必要?
最新のブランチを反映させる方法を知らないため、一旦 exit()
し、再び julia を起動し、using で呼び出し。
次は、plot(gp)
でエラーだ。
なので、 一旦、Pkg.free("GaussianProcesses")
で元に戻す。
そして、再び exit して、その後、Pkg.checkout("GaussianProcesses")
を実行。
plot(gp)
でエラー出ず。
そして、
julia> optimize!(gp) Results of Optimization Algorithm * Algorithm: Conjugate Gradient * Starting Point: [-1.0,0.0,0.0,0.0] * Minimizer: [-3.506712993556627,-0.080606913136668, ...] * Minimum: -3.600592e+00 * Iterations: 19 * Convergence: false * |x - x'| < 1.0e-32: false * |f(x) - f(x')| / |f(x)| < 1.0e-32: false * |g(x)| < 1.0e-08: false * f(x) > f(x'): true * Reached Maximum Number of Iterations: false * Objective Function Calls: 69 * Gradient Calls: 50
キタ━━━━(゚∀゚)━━━━!!
まとめ
一応、Juliaのライブラリ GaussianProcesses
で超パラメータの最適化は出来た。
しかし、他のライブラリ(Optim
)の勝手なバージョンアップ等もあって、うまく動くことは保証されない。
今後も勝手なバージョンアップがありそうだから、ビジネス用途には全く向いていない。あくまで遊び(教育用途)レベルにとどめておくべき。