这个例子仍是 文档中的例子。原来文档有些坑。

一、简单框架

using Flux
using Flux: train!,Descent,Denseactual(x) = 4x + 2
x_train, x_test = hcat(0:5...), hcat(6:10...)
y_train, y_test = actual.(x_train), actual.(x_test)predict = Dense(1, 1) # Dense(1=>1) 已经不能用
loss(x, y) = Flux.Losses.mse(predict(x), y)opt = Descent()
data = [(x_train, y_train)]
parameters = Flux.params(predict)for epoch in 1:200train!(loss, parameters, data, opt)ls = loss(x_train, y_train)error = predict(x_test) .- y_testprintln("epoch : $epoch, loss :$ls  parameters: $parameters" )println("error : $error")end

运行结果:


> epoch : 1, loss :96.65946  parameters: Params([Float32[7.3060203;;],
> Float32[1.783612]]) error : Float32[19.619732 22.925755 26.231773
> 29.537796 32.84382] epoch : 2, loss :91.72043  parameters: Params([Float32[1.3531775;;], Float32[0.17387962]]) error :
> Float32[-17.707054 -20.353878 -23.0007 -25.647522 -28.294346] epoch :
> 3, loss :87.035255  parameters: Params([Float32[7.118746;;],
> Float32[1.8625149]]) error : Float32[18.57499 21.693737 24.81248
> 27.931229 31.049973] epoch : 4, loss :82.5907  parameters: Params([Float32[1.4697881;;], Float32[0.330639]]) error :
> Float32[-16.850632 -19.380844 -21.911057 -24.441269 -26.971481] epoch
> : 5, loss :78.374275  parameters: Params([Float32[6.9431906;;],
> Float32[1.9296173]]) error : Float32[17.58876 20.531952 23.475143
......
> Float32[0.119464874 0.13848305 0.15750122 0.1765213 0.19553757] epoch
> : 196, loss :0.0036572255  parameters: Params([Float32[3.9814754;;],
> Float32[1.9947717]]) error : Float32[-0.11637688 -0.13490105
> -0.15342712 -0.1719513 -0.19047546] epoch : 197, loss :0.0034711396  parameters: Params([Float32[4.018051;;], Float32[2.0050797]]) error :
> Float32[0.113386154 0.1314373 0.14949036 0.1675415 0.18559265] epoch :
> 198, loss :0.0032945399  parameters: Params([Float32[3.9824178;;],
> Float32[1.9950383]]) error : Float32[-0.11045456 -0.1280365
> -0.14561844 -0.1632042 -0.18078613] epoch : 199, loss :0.0031269772  parameters: Params([Float32[4.0171328;;], Float32[2.0048218]]) error :
> Float32[0.10761833 0.124752045 0.14188385 0.15901566 0.17614746] epoch
> : 200, loss :0.0029679425  parameters: Params([Float32[3.983312;;],
> Float32[1.9952911]]) error : Float32[-0.10483742 -0.12152672
> -0.13821411 -0.1548996 -0.1715889]

二、核心概念:梯度

using Flux
using Flux: train!,Descent,Dense,Paramsx = [1,2,2,3,5];
y = [2,1,2,2,4];
z = [1,8,3,6,5];## f(x1,x2,x3,x4,x5)= x1^2 +x2^2 +x3^2 +x4^2 +x5^2 = sum((x).^2)
## df/dx1 = 2*x1,其它x1,x2,x3,x4,x5类推
## gradient(f,x) = [df/x1,df/x2,df/x3,df/x4,df/x5]
f(x) = sum((x).^2); # 需要是一个值
println("f -> gradient: $(gradient(f,x))")
gs = gradient(params(x)) dof(x)
end
## g(x1,x2,x3,x4,x5,y1,y2,y3,y4,y5) = (x1-y1)^2 +(x2-y2)^2 +(x3-y3)^2 +(x4-y4)^2 +(x5-y5)^2 = sum((x-y).^2)
## gradient(g,x,y) = ([dg/dx1,dg/dx2,dg/dx3,dg/dx4,dg/dx5],[dg/dy1,dg/dy2,dg/dy3,dg/dy4,dg/dy5])
## 对x1而言,dg/dx1 = 2*x1 -2y1; 其它 x1,x2,x3,x4,x5,y1,y2,y3,y4,y5依此类推
g(x,y) = sum((x-y).^2);
println("g -> gradient: $(gradient(g,x,y)))")## 扩展到其它更多维参数也是类似
k(x,y,z) = sum((x-y).^2 + sin.((x-z).^2));
## 对x1而言,dk/dx1 = 2*x1 -2y1 + cos((x1-z1)^2)*(2*x1 -2*z1)
## gradient(k,x,y,z) = ([dk/dx1,dk/dx2,dk/dx3,dk/dx4,dk/dx5],
[dk/dy1.dk/dy2,dk/dy3,dk/dy4,dk/dy5],
[dk/dz1,dk/dz2,dk/dz3,dk/dz4,dk/dz5])
println("k -> gradient: $(gradient(k,x,y,z))")

运行 结果:

f -> gradient: ([2.0, 4.0, 4.0, 6.0, 10.0],)
g -> gradient:
([-2.0, 2.0, 0.0, 2.0, 2.0], [2.0, -2.0, 0.0, -2.0, -2.0]))
k -> gradient :
([-2.0, 3.535564275528856, -1.0806046117362795, 7.466781571308061, 2.0],
[2.0, -2.0, -0.0, -2.0, -2.0],[-0.0, -1.535564275528856, 1.0806046117362795, -5.466781571308061, -0.0])

对gradient(g,x,y)验算和检查:

for i in 1:5value = 2*x[i] -2y[i] + cos((x[i]-z[i])^2)*(2*x[i] -2*z[i])println("$i => $value")
end

运行结果,表明计算是正确的。

1 => -2.0
2 => 3.535564275528856
3 => -1.0806046117362795
4 => 7.466781571308061
5 => 2.0

三、待续

Julia: Flux.jl尝试相关推荐

  1. Julia 将.jl脚本文件打包为可执行文件

    一.构建exe文件 第一步: using Pkg Pkg.add("PackageCompiler") 第二步:使用包管理器创建应用程序的源代码所需要的项目和清单文件. using ...

  2. Julia 基于Flux深度学习框架的cifar10数据集分类

    目录 一.安装Julia 二.Flux简介 三.安装Flux和相关依赖库 四.cifar10项目下载 *五.cifar10数据集下载 六.开始训练 一.安装Julia IDE是Atom,安装和使用教程 ...

  3. 使用Pyhon+Flux+Julia实现手写数字识别

    使用MNIST数据集对0到9之间的数字进行手写数字识别是神经网络的一个典型入门教程. 该技术在现实场景中是很有用的,比如可以把该技术用来扫描银行转帐单或支票,其中帐号和需要转账的金额可以被识别处理并写 ...

  4. Julia 语言可重用性高竟源于缺陷和不完美?

    [编者按]关于Julia编程语言,最值得注意的最大优势之一就是程序包的编写方式.你几乎总是可以在自己的软件中重用他人的类型或方法,而不会出现问题. 通常来说,从高层角度来说,对于所有编程语言而言这是正 ...

  5. Julia ---- 为Julia做一下辩解

    我写这篇文章的主要目的就是为了给我喜欢的Julia语言一辩,并且指出人们对Julia语言的几个常见的误区. 预警:文章非常长,所以需要希望入坑的人有耐心阅读 文章内容 1.常见误区 2.重新认识Jul ...

  6. Julia是什么?为什么突然这么火?

    最近网上突然冒出来一个Julia,什么鬼?百度一查,卧槽,又是一门编程语言.之前的kotlin ,python余热未散,怎么又冒出来一个?既然咱是搞IT的,那就不能忽视,赶紧去google一下学习一下 ...

  7. julia系列1:介绍与安装

    参考 https://zhuanlan.zhihu.com/p/41953244 还有这篇教程:https://zhuanlan.zhihu.com/p/60889456 详见julia中文文档:ht ...

  8. julia应用于自动驾驶汽车、机器人、3D 打印、精准医疗、增强现实、基因组学、能源交易、机器学习、金融风控和太空任务设计等多个领域...

    编程界的新宠 Julia 发布 1.0 正式版本,多种优势集于一身 2018-08-14 14:14 公司 Julia 的累积下载次数超过 200 万,已被应用于自动驾驶汽车.机器人.3D 打印.精准 ...

  9. PyTorch核心开发者灵魂发问:我们怎么越来越像Julia了?

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI PyTo ...

  10. redis生产环境持久化_在SageMaker上安装持久性Julia环境

    redis生产环境持久化 SageMaker is a great environment for data scientists to explore new languages and metho ...

最新文章

  1. 查看显卡利用率 python_既然大家都说装了win10,就不用鲁大师监测显卡温度,为什么呢?...
  2. Apache Mahout 简介 通过可伸缩、商业友好的机器学习来构建智能应用程序
  3. 正儿八经的详细讲java内部类
  4. 【Python科学计算系列】概率论与数理统计
  5. python如何装sklearn_python安装sklearn
  6. 你的电脑已经成为肉鸡的六种现象
  7. win7 配置jdk
  8. atitit.交换机 汇聚上联、网络克隆和标准共享的原理与区别
  9. envi linux 安装教程,Ubuntu下普通用户安装ENVI 4.8
  10. QT 5.9.0下载安装及配置教程(自动化运维环境)
  11. 0基础如何转行自学软件测试
  12. Python实现快速排序
  13. java ascii 编码方式,Java 字符编码 ASCII、Unicode和UTF-8
  14. KRPANO在线下载720yun场景图片,快速下载高清全景图
  15. 计算机专业全真模拟试卷答案,最新高职考试全真模拟试卷计算机类试题(二、六、七、八、九、十,山东省,有答案)...
  16. 2006电子商务大盘点
  17. 从HP Deskjet 460 说激光打印机打印原理
  18. SWUST OJ 617: 班级课程成绩计算
  19. PMP项目管理-项目质量管理(4)
  20. 导航机器测试软件,【图】DSA所有版本+数据升级工具+端口检测+导航游戏+一机多图教程...

热门文章

  1. Memcached启动提示:cann't run as root without the -u switch
  2. Android lollipop 更新问题
  3. 怎样正确的使用Cookie的Path详细解析
  4. php ckeditor图片上传
  5. SSH中各个框架的作用以及Spring AOP,IOC,DI详解
  6. IIS安装和ASP.NET Web应用程序开发期间部署到IIS自定义主机域名并附加进程调试...
  7. Oracle的CLOB大数据字段类型(转)
  8. 20189307《网络攻防》第五周作业
  9. Mysql 计划任务
  10. 基于Axis1.4的webservice接口开发(环境搭建)