机器/深度学习Fairseq、CycleGAN、Paradox、seq2seq介绍

以下为你介绍的机器学习/深度学习软件都可用在Linux系统上:Fairseq(基于卷积神经网络的机器翻译)、CycleGAN(生成对抗网络图像处理工具)、Paradox(小型深度学习框架)、seq2seq(通用编码器/解码器框架)。

1、Fairseq(基于卷积神经网络的机器翻译)

机器/深度学习Fairseq、CycleGAN、Paradox、seq2seq介绍

注:上面的是模型图。

Fairseq 使用一种全新的卷积神经网络(CNN)进行语言翻译,结果以 9 倍于以往循环神经网络(CNN)的速度实现了目前最高准确率。它在单个机器上实现多 GPU 训练,并在 CPU 和 GPU 上实现快速搜索。

Fairseq 提供了英语到法语,英语到德语和英语到罗马尼亚语翻译的预训练模型。

下载地址:https://github.com/facebookresearch/fairseq

2、CycleGAN(生成对抗网络图像处理工具)

CycleGAN 是一个图像处理工具,可将绘画作品生成照片。可以把它理解为是一个“反滤镜”,该工具来自来自加州大学伯克利分校。

将画作还原成照片:

机器/深度学习Fairseq、CycleGAN、Paradox、seq2seq介绍

当然,把画作转化成照片是一个较小的需求,CycleGAN 利用这项技术实现了更为实用的功能:将夏天转换成冬天,或将普通的马转化成斑马。

机器/深度学习Fairseq、CycleGAN、Paradox、seq2seq介绍

机器/深度学习Fairseq、CycleGAN、Paradox、seq2seq介绍

与其它人工智能绘画不同,CycleGAN 的研究团队试图建立一个可双向转化不丢失信息的双向算法。在以往的人工智能绘画,尤其是将照片转化成绘画的 App 里,人工智能其实忽略了很多无法与算法对应的细节,使得细节丰富的照片被转化成细节没那么丰富并带有风格化特征的图片。

但在 CycleGAN 里细节被要求完全保留,尽管算法找不到可以对应的元素。研究人员希望能够将一张图片输入 CycleGAN 后进行多次反复转化(照片→绘画→照片→绘画→照片),最终可以获得与原始照片相同或相近的图片。

机器/深度学习Fairseq、CycleGAN、Paradox、seq2seq介绍

除了每次转化后要丢失一些像素外,CycleGAN 在循环转换中的表现不错。

为了实现这一点,研究团队必须以机器可以理解的方式去描述每种风格之间的关系,并给机器 “吃下” 大量来自 Flicker 的照片进行训练,再人工去纠正机器在训练过程中产生的错误。CycleGAN 目前在针对几何、颜色和风格上的转化都不错。

环境要求:

Linux or OSX。

NVIDIA GPU + CUDA CuDNN (不带CuDNN的CPU模式和CUDA可以进行最小程度的修改,但未经测试)。

对于MAC用户,您需要Linux/GNU命令gfind和gwc,它们可以与brew install findutils coreutils一起安装。

安装:

1]、从https://github.com/torch/distro安装Torch和依赖项。

2]、安装nngraph、class、display

luarocks install nngraph

luarocks install class

luarocks install https://raw.githubusercontent.com/szym/display/master/display-scm-0.rockspec

3]、克隆此仓库:

git clone https://github.com/junyanz/CycleGAN

cd CycleGAN

下载地址:https://github.com/junyanz/CycleGAN

3、Paradox(小型深度学习框架)

Paradox 是一个用 Python 3 和 numpy 实现一个简单的深度学习框架,了解流行框架的原理。

示例代码:

import numpy as np

import matplotlib.pyplot as plt

import paradox as pd

# 随机生成点的个数。

points_sum = 200

x_data = []

y_data = []

# 生成y = 2 * x + 1直线附近的随机点。

for _ in range(points_sum):

x = np.random.normal(0, 2)

y = x * 2 + 1 + np.random.normal(0, 2)

x_data.append(x)

y_data.append(y)

x_np = np.array(x_data)

y_np = np.array(y_data)

# 定义符号。

X = pd.Constant(x_np, name='x')

Y = pd.Constant(y_np, name='y')

w = pd.Variable(0, name='w')

b = pd.Variable(1, name='b')

# 使用最小二乘误差。

loss = pd.reduce_mean((w * X + b - Y) ** 2)

# 创建loss计算引擎,申明变量为w和b。

loss_engine = pd.Engine(loss, [w, b])

# 梯度下降optimizer。

optimizer = pd.GradientDescentOptimizer(0.00005)

# 迭代100次最小化loss。

for epoch in range(100):

optimizer.minimize(loss_engine)

loss_value = loss_engine.value()

print('loss = {:.8f}'.format(loss_value))

# 获取w和b的训练值。

w_value = pd.Engine(w).value()

b_value = pd.Engine(b).value()

# 绘制图像。

plt.title('Paradox implement Linear Regression')

plt.plot(x_data, y_data, 'ro', label='Data')

plt.plot(x_data, w_value * x_data + b_value, label='Regression')

plt.legend()

plt.show()

运行结果:

机器/深度学习Fairseq、CycleGAN、Paradox、seq2seq介绍

下载地址:https://gitee.com/ictxiangxin/paradox

4、seq2seq(通用编码器/解码器框架)

机器/深度学习Fairseq、CycleGAN、Paradox、seq2seq介绍

seq2seq 是 Google 开源的一款用于 TensorFlow 的通用编码器&解码器框架(encoder-decoder framework),可用于机器翻译、文本摘要、会话建模、图像描述等。

设计目标/特性:

通用性:Google 最初为机器翻译开发了这个框架,但是后来用于各种其他任务,包括摘要、会话建模和图像描述。只要你的问题可以以一种格式编码输入数据,并解码为另一种格式,你应该能够使用或扩展这个框架。

可用性:你可以使用单行命令训练模型。支持多种类型的输入数据,包括标准的原始文本。

再现性:使用 YAML 文件配置训练流程和模型。这也允许其他人运行和你完全相同的模型配置。

可扩展性:代码以模块化的方式构建,并且易于拓展。例如,添加新类型的注意机制或编码器架构仅需要最少量的代码即可修改。

文档:所有代码都使用标准的 Python docstrings 记录,有书面指南帮助开始执行常见任务。

良好的性能:为了使代码足够简洁,没有试图榨干所有性能,但是实现速度已足以涵盖几乎所有的生产和研究用例。tf-seq2seq 还支持分布式训练,从而折中计算能力和训练时间。

下载地址:https://github.com/google/seq2seq

注明

以上就是机器/深度学习Fairseq、CycleGAN、Paradox、seq2seq的介绍内容,这些机器学习/深度学习软件都能使用在Linux操作系统中。

栏目相关文章