极简Julia语言 │ 机器如何学习( 二 )


极简Julia语言 │ 机器如何学习
文章图片
■图9.2测试图像分类器程序的猫图像
这是我与程序之间的交互:
Enterthenameofyourfile:cat.jpg
Ithinkthisimagecontains:Egyptiancat
那么如何用机器学习生成一些艺术作品呢?我们将使用一种称为梯度上升(gradientascent)的技术生成DeepDream艺术作品 。 你可能还记得几年前的DeepDream , 当时Google的研究人员可视化了“神经网络的激活” 。 我知道这听起来很复杂 , 在大多数语言中 , 即使是实现算法的一个简单版本也需要相当多的代码 。
但在Julia中 , 这几乎是微不足道的 。 下面让我们实现一个可以获取图像并对其添加“艺术风格”的应用程序 。 打开一个新文件 , 输入以下代码:
极简Julia语言 │ 机器如何学习
文章图片
在本例中 , 我不会深入讲解这段代码的工作原理 , 关键是让你看到使用Julia能够做些什么 。
更多需要了解的内容:
从本质上说 , 这不是训练一个神经网络的权重 , 而是通过一个损失函数(lossfunction)找到对权重的梯度 , 我们通过使用一个可以使卷积神经网络中某层滤波器的均值最大化的函数找到了相对于输入的梯度 。
现在 , 如果你再次运行该应用程序 , 它将加载该模型并请求你输入一个文件 。 这次我输入了一张自己的图像(见图9.3) 。
极简Julia语言 │ 机器如何学习
文章图片
■图9.3输入DeepDream.jl的图片
我得到了如图9.4所示的输出 。
极简Julia语言 │ 机器如何学习
文章图片
■图9.4DeepDream.jl生成的第一张艺术作品
哇!这是一张很棒的艺术作品 。 如果你将第23行代码
model=VGG19.layers[1:11]
改为
model=VGG19.layers[1:end-10]
你应该会得到一张令人毛骨悚然的艺术作品(见图9.5) 。
极简Julia语言 │ 机器如何学习
文章图片
■图9.5DeepDream.jl生成的第二张艺术作品
好吧 , 这也太奇怪了 。 让我们将第23行代码更改为
model=VGG19.layers[1:7]
现在 , 你应该会看到图9.6中的图像 。
极简Julia语言 │ 机器如何学习
文章图片
■图9.6DeepDream.jl生成的第三张艺术作品
很好!关于这种艺术作品还有一些需要讲解的地方:它不是计算机在画布上的基本图像上随机画出来的 , 事实上 , 该系统是在世界上最大的图像数据集上进行训练的 , 它包含超过1000个类别的100多万张图像 。 所以 , 如果你仔细观察 , 你可能会发现动物或其他类似于图像中描绘的物体的一些特征 。 例如 , 在生成的第二张图像中 , 你可能会在我的眼睛和嘴巴周围看到一些类似狗或其他动物的特征 , 这是因为在生成本艺术作品之前 , 这个系统的数据集中有很多动物 。
你刚刚实现的一切都是由机器学习技术支持的 , 并且通过Julia的语法、函数和编译器使其变得非常简单 。
实例讲解
极简Julia语言
精彩回顾
概述及准备Julia环境
1.为什么要学习Julia语言
2.Julia背后的原理
3.准备Julia语言环境
Julia中的重要函数
4.Julia中的三个重要函数
下期预告
机器如何学习
6.机器学习背后的微分入门
3
参考书籍
《极简Julia语言》
作者:(加)坦梅·巴克西(TanmayBakshi)著 , 李媚译
定价:59元
扫码优惠购书返回搜狐 , 查看更多