TensorFlow练习27: 验证码生成器-从文本生成图像

前文<TensorFlow练习20: 使用深度学习破解字符验证码>是一个基于CNN的识别验证码练习,也就是根据图像预测文本。本帖就来个大反转,即从文本合成图像,看看能不能用深度学习练一个验证码生成器。

本帖使用的模型为GANs,如下图:

TensorFlow练习27: 验证码生成器-从文本生成图像
上图是根据描述生成花,本帖的问题相对简单,至少不用理解自然语言

继续阅读TensorFlow练习27: 验证码生成器-从文本生成图像

TensorFlow练习26: AI操盘手

Deep Q-learning玩游戏玩的不错,使用类似的方法,本帖尝试使用强化学习训练一个 AI操盘手。这个AI可以决定一支股票什么时候买入,什么时候卖出,当然,终极目标是高回报。

我是小小程序猿,非金融玩家,本帖只是一点个人观点,纯属娱乐。如有错误,欢迎指正。

话说股票价格到底能不能预测

先来看一下<随机游走假说-Random Walk>。

随机游走假说(英语:Random walk hypothesis)是金融学上的一个假说,认为股票市场的价格,会形成随机游走模式,因此它是无法被预测的。(摘自wiki) 继续阅读TensorFlow练习26: AI操盘手

TensorFlow练习25: 使用深度学习做阅读理解+完形填空

记的在学生时代,英语考试有这么一种类型的题,叫:阅读理解。首先让你读一段洋文材料,然后回答一些基于这个洋文材料提的问题。

我先给你出一道阅读理解

Big Panda learned to code when he was 21. He live in China and have no life, feel like a big loser. But here is one thing Panda want you to remember…it´s never too late! You can do anything if you put your heart on it!

____ is the loser.(下划线处该填什么呢?)

我出的这道填空题,对人来说轻而易举,但是要让机器回答就很难了。机器阅读和理解人类语言是非常有挑战性的。

本帖就使用TensorFlow练习一个阅读理解,看看准确率能到什么程度。 继续阅读TensorFlow练习25: 使用深度学习做阅读理解+完形填空

MovingAverage-滑动平均

MovingAverage可翻译为滑动平均或移动平均,是做时间序列预测时用到的简单方法。

计算方法:对于一个给定的数列,首先设定一个固定的值k,然后分别计算第1项到第k项,第2项到第k+1项,第3项到第k+2项的平均值,依次类推。

下面代码取自TensorFlow源代码:

以1、2、3、4、5共5个数为例,window为3,计算过程为:(1+2+3)/3=2,(2+3+4)/3=3,(3+4+5)/3=4。 继续阅读MovingAverage-滑动平均

Fizz Buzz in Tensorflow-一场奇怪的面试(译)

原文地址:http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow(作者:Joel Grus)

话说Fizz Buzz是什么鬼?

Fizz Buzz是洋人小朋友在学除法时常玩的游戏,玩法是:从1数到100,如果遇见了3的倍数要说Fizz,5的倍数就说Buzz,如果即是3的倍数又是5的倍数就说FizzBuzz。

最后演变为一个编程面试题:写一个程序输出1到100,但是如果遇到数字为3的倍数时输出Fizz,5的倍数输出Buzz,既是3的倍数又是5的倍数输出FizzBuzz。 继续阅读Fizz Buzz in Tensorflow-一场奇怪的面试(译)

TensorFlow练习24: GANs-生成对抗网络 (生成明星脸)

GANs是Generative Adversarial Networks的简写,中文翻译为生成对抗网络,它最早出现在2014年Goodfellow发表的论文中:Generative Adversarial Networks。GANs是目前深度学习领域最火的网络模型,苹果最近发布的第一篇论文就是关于GANs的:SimGAN。

简单来说,GANs会学着生成和训练数据相似的数据,一个最典型的应用是生成图像。假设你有一堆猫的图片,你使用这些图片训练GANs,之后它会生成和训练数据相类似的猫的图片(它习的了猫的特征)。

GANs用到机器学习的两种模型:Generative生成模型和Discriminative判别模型。

GANs类比:假设G是大伪艺术家,以制作古董赝品为生,G的终极目标是以假乱真。但是呢,又有一些人以鉴宝为生(D)。开始你给D展示了一些古董真品,告诉D这是正品。然后G开始制作赝品,想骗过D,让他分辨不出真假。随着D看到越来越多的真品,G要骗过D就越来越难,当然,G也不是吃闲饭的,它会加倍努力的试图骗过D。随着这种对抗的持续,不仅D鉴宝的本领提高了,G也会越来越擅长制作赝品。这就是名字中生成-对抗的意思。 继续阅读TensorFlow练习24: GANs-生成对抗网络 (生成明星脸)

可视化Google Inception V3模型的网络结构

深度学习涉及到图像就少不了CNN模型,前面我做过几个关于图像的练习,使用的CNN网络也不够”Deeper”。我在做对象检测练习( Object Detection)时,需要用到更复杂的网络结构。本帖就使用TensorBoard看看Inception V3模型的网络结构。

Inception (GoogLeNet)是Google 2014年发布的Deep Convolutional Neural Network,其它几个流行的CNN网络还有QuocNetAlexNetBN-Inception-v2VGGResNet等等。

Inception V3模型源码定义:tensorflow/contrib/slim/python/slim/nets/inception_v3.py

训练大的网络模型很耗资源,幸亏TensorFlow支持分布式:

继续阅读可视化Google Inception V3模型的网络结构

TensorFlow练习23: “恶作剧”

前面有一个帖《OpenCV检测场景内是否有移动物体》我用树莓派做了一个简单的Motion Detection,放在卫生间的,它会在我上大号时自动播放音乐。

我一个人租房,几个盆友周末时常会找我玩,他们觉得我做的Motion Detection很垃圾。于是我就想恶搞一下,用TensorFlow做一个“人脸识别”,在我上大号时播放音乐,如果是别人就播放《张震讲鬼故事》(@xingCI说放屁声更搞)。 继续阅读TensorFlow练习23: “恶作剧”

TensorFlow练习22: 手写汉字识别

MNIST手写数字数据集通常做为深度学习的练习数据集,这个数据集恐怕早已经被大家玩坏了。本帖就介绍一个和MNIST类似,同时又适合国人练习的数据集-手写汉字数据集,然后训练一个简单的Deep Convolutional Network识别手写汉字。

识别手写汉字要把识别手写洋文难上很多。首先,英文字符的分类少,总共10+26*2;而中文总共50,000多汉字,常用的就有3000多。其次,汉字有书法,每个人书写风格多样。

手写汉字数据集: CASIA-HWDB

继续阅读TensorFlow练习22: 手写汉字识别

TensorFlow练习21: 把Deep Dream应用到视频上

前帖<实现谷歌Deep Dream>可以生成扭曲的图像,本帖就基于前一贴的代码在视频上应用Deep Dream,应该能生成比较抽的视频。

代码逻辑:

  1. 使用ffmpeg从视频中提取帧
  2. 为每一帧图像应用Deep Dream
  3. 使用ffmpeg把帧图像重新组合成视频,最后和音频合并

继续阅读TensorFlow练习21: 把Deep Dream应用到视频上