Julia编程语言介绍:随机器学习而兴起

2018-10-2220:25:14编程语言入门到精通Comments3,642 views字数 3122阅读模式

Julia这个编程语言即有Python的开发效率,也有C的执行效率,是为数值运算设计的编程语言。Julia可以直接调用C,很多开源的C和Fortran库都集成到了Julia基础库。另外,它也有notebook。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

Julia试图取代R, MATLAB, Octave等数值计算工具。其语法与其他科学计算语言相似。在许多情况下拥有能与编译型语言相媲美的性能。Julia的设计遵从三个原则,快、表达式丰富、动态语言。Julia的核心使用C语言编写,其他部分使用Julia本身编写。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

目前这门编程语言在国内知名度不高,如果你在百度搜索Julia,第一页没有一个和Julia语言相关的条目,相反出现的是一个日本av star,这。。。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

目前在机器学习领域最流行的编程语言还是Python,看一张图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

一个编程语言的兴衰和背后的社区有直接关系。如果一个编程语言社区强大,那么资源就多,各种库也多,那么用的人就多。Julia的社区貌似都是搞数值运算的,它的应用目前也只限制在这了,如果拿这个语言做Web(有一个库),那不累死。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

本帖使用Julia演示一个手写数字识别,看看它的语法是否能和你对上眼。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

Julia的几个机器学习库
ScikitLearn.jl:类似Python的scikit-learn
Mocha.jl
TextAnalysis.jl
MXNet.jl
TensorFlow.jl:封装TensorFLow
安装Julia
julia源代码:https://github.com/JuliaLang/julia
http://julialang.org/downloads/文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

# Ubuntu
$ sudo apt install gfortran
$ sudo apt install julia
# macOS
$ brew install Caskroom/cask/julia文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

文档:http://docs.julialang.org/en/stable/manual/文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

julia> Pkg.test("Mocha")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

手写数字识别
安装Mocha.jl:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

julia> Pkg.add("Mocha")
# 或安装最新版 Pkg.clone("https://github.com/pluskid/Mocha.jl.git")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

测试安装:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

julia> Pkg.test("Mocha")
准备手写数字数据集:https://github.com/pluskid/Mocha.jl/tree/master/examples/mnist文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

代码:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

# https://github.com/pluskid/Mocha.jl/blob/master/examples/mnist/mnist.jl文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

using Mocha
srand(12345678)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

data_layer = AsyncHDF5DataLayer(name="train-data", source="data/train.txt", batch_size=64, shuffle=true)
conv_layer = ConvolutionLayer(name="conv1", n_filter=20, kernel=(5,5), bottoms=[:data], tops=[:conv])
pool_layer = PoolingLayer(name="pool1", kernel=(2,2), stride=(2,2), bottoms=[:conv], tops=[:pool])
conv2_layer = ConvolutionLayer(name="conv2", n_filter=50, kernel=(5,5), bottoms=[:pool], tops=[:conv2])
pool2_layer = PoolingLayer(name="pool2", kernel=(2,2), stride=(2,2), bottoms=[:conv2], tops=[:pool2])
fc1_layer = InnerProductLayer(name="ip1", output_dim=500, neuron=Neurons.ReLU(), bottoms=[:pool2], tops=[:ip1])
fc2_layer = InnerProductLayer(name="ip2", output_dim=10, bottoms=[:ip1], tops=[:ip2])
loss_layer = SoftmaxLossLayer(name="loss", bottoms=[:ip2,:label])文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

backend = DefaultBackend()
init(backend)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

common_layers = [conv_layer, pool_layer, conv2_layer, pool2_layer, fc1_layer, fc2_layer]
net = Net("MNIST-train", backend, [data_layer, common_layers..., loss_layer])文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

exp_dir = "snapshots-$(Mocha.default_backend_type)"文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

method = SGD()
params = make_solver_parameters(method, max_iter=10000, regu_coef=0.0005,
mom_policy=MomPolicy.Fixed(0.9),
lr_policy=LRPolicy.Inv(0.01, 0.0001, 0.75),
load_from=exp_dir)
solver = Solver(method, params)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

setup_coffee_lounge(solver, save_into="$exp_dir/statistics.jld", every_n_iter=1000)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

# report training progress every 100 iterations
add_coffee_break(solver, TrainingSummary(), every_n_iter=100)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

# save snapshots every 5000 iterations
add_coffee_break(solver, Snapshot(exp_dir), every_n_iter=5000)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

# show performance on test data every 1000 iterations
data_layer_test = HDF5DataLayer(name="test-data", source="data/test.txt", batch_size=100)
acc_layer = AccuracyLayer(name="test-accuracy", bottoms=[:ip2, :label])
test_net = Net("MNIST-test", backend, [data_layer_test, common_layers..., acc_layer])
add_coffee_break(solver, ValidationPerformance(test_net), every_n_iter=1000)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

solve(solver, net)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

#Profile.init(int(1e8), 0.001)
#@profile solve(solver, net)
#open("profile.txt", "w") do out
# Profile.print(out)
#end文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

destroy(net)
destroy(test_net)
shutdown(backend)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

---------------------
作者:MachineLP
来源:CSDN文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6937.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/6937.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定