使用 Tensorflow 构建与训练基于 Transformer 算法的宋词生成小程序(一)

学完 DeepLearning 系列课程后就想做一个小应用试试。一开始基于 RNN 训练了个古诗机器人,这个做的人很多,于是换了宋词。宋词是基于词牌生成,相对数据量比较少,基于 RNN 训练效果很一般。后来了解到了 Transformer 算法感觉发现了生机,训练了一下感觉效果真是不错。

使用效果测试的话可以直接扫码访问这个小程序玩玩, 或者小程序搜索 【小诗一首】:

小诗一首-宋词


这是生成的例子:

小诗一首-宋词-例子

Transformer (Attention Is All You Need) 介绍

Transformer 是 Google 于 2017 年在 Attention Is All You Need 论文中提出,基于 Attention 机制,在机器翻译及其他语言理解任务有着以往无法比拟的效果,后 2018 年又提出 Universal Transformer, 在多项有难度的语言理解任务上泛化效果明显更好。Transformer 解决 RNN 存在的长序列信息丢失的问题,像宋词这种讲究格式讲究押韵的语句,在 RNN 中就很难训练到好的效果,但是 Transformer 就可以很好的提取训练宋词中的格式以及押韵特征。

更多

想深入学习 Transformer 以及算法可以看 Tensorflow 官方的教程. 等下篇文章我也详细介绍如何基于 Transformer 训练一个宋词机器人,包括如何预处理训练数据,如何使用模型生成序列文本。

基于 github tag 与 travis 构建 npm 自动化 release 系统

最近发了个 npm package (koa-flash-message) 用于 kails 的 flash message 管理,发现手动 publish 还是比较麻烦了,所以决定利用 github tag 和 travis ci 来构建基于 tag 的自动化 publish 系统。
继续阅读基于 github tag 与 travis 构建 npm 自动化 release 系统

前后端分离-利用 koa 实现基于 node.js 的 web 高性能中间层

之前讲了利用 koa 实现了类似 rails 的 web 开发 mvc 项目 kails。 但是在今天的 web 开发中,大家都讲究前后端分离以及微服务,传统的 MVC 已经不能满足很多人胃口了。 所以今天再讲下如何利用 koa 构建高性能的 web 中间层,实现大前端概念下的前后端分离。

继续阅读前后端分离-利用 koa 实现基于 node.js 的 web 高性能中间层

使用 Travis CI 为开源项目 kails 构建自动化 CI 系统

Kails 开源后得到许多的朋友的关注,也就希望把 kails 做成比较标准的开源项目。想到的首先是给项目加测试代码,然后就是利用 CI 工具来自动跑测试,实现 自动化测试每一个新功能。由于是开源项目所以可以直接使用 travis ci, 它对开源项目是免费的,而由于它是基于 docker 来配置测试环境,非常的简单省心。

继续阅读使用 Travis CI 为开源项目 kails 构建自动化 CI 系统

docker容器内网络请求缓慢问题解决

在使用docker的过程中发现了几个问题,在docker里进行的网络请求经常会失败,比如npm install以及bundle install等操作,或者是作为中间层在应用中去获取api数据的过程经常会出现timeout等情况,所以开始探究docker的网络机制,以解决网络请求太慢的问题。
继续阅读docker容器内网络请求缓慢问题解决

[Kails]一个基于Koa2构建的类似于Rails的nodejs开源项目

最近研究了下 Koa2 框架,喜爱其中间件的思想。但是发现实在是太简洁了,只有基本功能,虽然可以方便搭各种服务,但是离可以适应快速开发的网站框架还是有点距离。于是参考 Rails 的大致框架搭建了个网站框架 kails, 配合 postgres 和 redis, 实现了 MVC 架构,前端 webpack,react前后端同构等网站开发基本框架。本文主要介绍 kails 搭建中的各种技术栈和思想。
继续阅读[Kails]一个基于Koa2构建的类似于Rails的nodejs开源项目

Rails使用负载均衡后获取用户ip错误问题解决

网站的流量越来越大后开始使用负载均衡来提高网站的并发数,负载均衡有很多选择,可以使用现成的slb产品,也可以使用nginx进行代理转发流量,使用后发现一个问题,服务器上获取的用户ip变成负载均衡机器的ip了,这里记录一下这个问题的解决。
继续阅读Rails使用负载均衡后获取用户ip错误问题解决

基于docker安装jenkins的配置和使用

最近更换CI,多方研究选上jenkins作为新的CI,这里简要介绍使用docker搭建配置jenkins的流程,以及遇到的一些坑。直接利用docker镜像跑jenkins,不仅简化了jenkins的安装和配置,而且再也不用担心换机器还要重复配置半天了。
继续阅读基于docker安装jenkins的配置和使用

生产环境使用docker部署rails应用puma和sidekiq

有幸拿到docker beta的测试资格, 在Mac OSX下使用docker更加方便好玩了。这篇博文介绍如何在生产环境也就是线上利用docker实现快速部署以及横向扩展,为大规模负载均衡做准备。这里使用一个docker容器来跑rails应用,另一个容器来跑异步队列sidekiq等服务, 数据库和redis使用RDS和云redis,直接使用docker镜像的数据库也可以。
继续阅读生产环境使用docker部署rails应用puma和sidekiq

树莓派3命令行配置wifi无线连接和蓝牙连接

树莓派(raspberry pi)在3月份更新了,新的树莓派3内置wifi和蓝牙,再也不用usb适配器了,到手后第一步当然是测试蓝牙和wifi,不然买到2冒充的就傻眼了,本文介绍在命令行里启用wifi连接和蓝牙连接。
继续阅读树莓派3命令行配置wifi无线连接和蓝牙连接