谷歌推出TFGAN:开源的轻量级生成对抗网络库

简介:
本文来自AI新媒体量子位(QbitAI)

一般情况下,训练一个神经网络要先定义一下损失函数,告诉神经网络输出的值离目标值偏差大概多少。举个例子来说,对于图像分类网络所定义的损失函数来说,一旦网络出现错误的分类结果,比如说把狗标记成了猫,就会得到一个高损失值。

不过,不是所有任务都有那么容易定义的损失函数,尤其是那些涉及到人类感知的,比如说图像压缩或者文本转语音系统。

GAN(Generative Adversarial Networks,生成对抗网络),在图像生成文本,超分辨率,帮助机器人学会抓握,提供解决方案这些应用上都取得了巨大的进步。

不过,理论上和软件工程上的更新不够快,跟不上GAN的更新的节奏。


 一段生成模型不断进化的视频

上面的视频可以看出,这个生成模型刚开始只能产生杂乱的噪音,但是最后生成了比较清晰的MNIST数字。

为了让大家更容易地训练和评价GAN,我们提供TFGAN(轻量级GAN库)的源代码。其中包含容易上手的案例,可以充分地展现出TFGAN的表现张力和灵活性。我们还附上了一个示范教程,里面提到了高级的API端口怎么样能快速地用你的数据来训练模型。

 对抗损失对于图像压缩的效果。

顶层是ImageNet数据集里的图,中间那层是传统损失训练出来的图像压缩神经网络压缩和解压后的效果,底层是GAN损失和传统损失一起训练的神经网络效果。可以看得出来,底层的图边缘更锐利,细节更丰富,虽然和原图还是有一定的差距。

当使用端对端的语音合成TacotronTTS网络时,GAN可以增加部分真实的声音特性。如下图所示。

 大多文本转语音(TTS)网络产生的过平滑的声谱图

TacotronTTS可以有效减少生成音频的人工痕迹,出来的语音更真实自然(具体参考,https://arxiv.org/abs/1703.10135)。

TFGAN支持多种主流的实验方法。既有简单的可涵盖大部分GAN案例的函数(只要几行代码,开发者就可以拿自己的数据直接建模了),也有设计独立模块化的特殊GAN函数,你可以随意地组合自己需要的函数,损失、评估、特征、训练函数。

同时,TFGAN也支持搭配其他架构,或者原始的TensorFlow代码。使用了TFGAN搭建的GAN模型,以后底层架构的优化会更加方便。另外,也有大量的已经预置的损失函数或特征函数供开发者选择,不用再花大量时间自己去写。最最最重要的是代码已经被反复测试过了,开发者不用再担心GAN库数据上的错误。

最后,附TFGAN链接:
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/gan

原文链接:
https://opensource.googleblog.com/2017/12/tfgan-lightweight-library-for-generative-adversarial-networks.html

本文作者:Root 
原文发布时间:2017-12-13 
相关文章
|
5月前
|
C++
基于Reactor模型的高性能网络库之地址篇
这段代码定义了一个 InetAddress 类,是 C++ 网络编程中用于封装 IPv4 地址和端口的常见做法。该类的主要作用是方便地表示和操作一个网络地址(IP + 端口)
316 58
|
5月前
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
221 2
|
5月前
基于Reactor模型的高性能网络库之Tcpconnection组件
TcpConnection 由 subLoop 管理 connfd,负责处理具体连接。它封装了连接套接字,通过 Channel 监听可读、可写、关闭、错误等
173 1
|
5月前
|
负载均衡 算法 安全
基于Reactor模式的高性能网络库之线程池组件设计篇
EventLoopThreadPool 是 Reactor 模式中实现“一个主线程 + 多个工作线程”的关键组件,用于高效管理多个 EventLoop 并在多核 CPU 上分担高并发 I/O 压力。通过封装 Thread 类和 EventLoopThread,实现线程创建、管理和事件循环的调度,形成线程池结构。每个 EventLoopThread 管理一个子线程与对应的 EventLoop(subloop),主线程(base loop)通过负载均衡算法将任务派发至各 subloop,从而提升系统性能与并发处理能力。
309 3
|
5月前
基于Reactor模式的高性能网络库github地址
https://github.com/zyi30/reactor-net.git
143 0
|
5月前
基于Reactor模型的高性能网络库之Poller(EpollPoller)组件
封装底层 I/O 多路复用机制(如 epoll)的抽象类 Poller,提供统一接口支持多种实现。Poller 是一个抽象基类,定义了 Channel 管理、事件收集等核心功能,并与 EventLoop 绑定。其子类 EPollPoller 实现了基于 epoll 的具体操作,包括事件等待、Channel 更新和删除等。通过工厂方法可创建默认的 Poller 实例,实现多态调用。
318 60
|
5月前
|
安全 调度
基于Reactor模型的高性能网络库之核心调度器:EventLoop组件
它负责:监听事件(如 I/O 可读写、定时器)、分发事件、执行回调、管理事件源 Channel 等。
323 57
|
5月前
基于Reactor模型的高性能网络库之时间篇
是一个用于表示时间戳(精确到微秒)**的简单封装类
212 57
|
5月前
|
缓存 索引
基于Reactor模式的高性能网络库之缓冲区Buffer组件
Buffer 类用于处理 Socket I/O 缓存,负责数据读取、写入及内存管理。通过预分配空间和索引优化,减少内存拷贝与系统调用,提高网络通信效率,适用于 Reactor 模型中的异步非阻塞 IO 处理。
206 3
|
4月前
|
机器学习/深度学习 算法 数据库
基于GoogleNet深度学习网络和GEI步态能量提取的步态识别算法matlab仿真,数据库采用CASIA库
本项目基于GoogleNet深度学习网络与GEI步态能量图提取技术,实现高精度步态识别。采用CASI库训练模型,结合Inception模块多尺度特征提取与GEI图像能量整合,提升识别稳定性与准确率,适用于智能安防、身份验证等领域。

热门文章

最新文章